ibireme / YYCache

High performance cache framework for iOS.
MIT License
2.37k stars 505 forks source link

YYKVStorage _dbOpen may case crash when db can't open #43

Closed zzzworm closed 8 years ago

zzzworm commented 8 years ago

你好,感谢你分享的YYCache项目,我们在项目中有使用,在使用过程中我们发现一个问题: _dbOpen函数在某些情况下由于打开sqlite数据库失败,但是内部状态维护有点问题,具体是场景是:图片缓存被多次清理,在某次清理时打开sqlite数据库返回SQLITE_CANTOPEN,_dbOpen函数返回了NO,但是内部状态,db,_invalidated等状态都标示为打开成功状态,在下次使用图片缓存时由于_dbStmtCache被置为NULL,导致crash。 这里存在的问题还和sqlite的API有关系,int result = sqlite3_open(_dbPath.UTF8String, &_db);在返回失败是,db被赋值了

ibireme commented 8 years ago

感谢提供信息。 能问一下使用的 YYCache 版本是多少吗?

zzzworm commented 8 years ago

我使用YYCache版本是1.0

ibireme commented 8 years ago

好的,我会在多处理一下异常情况,增加容错处理和调试 log。

ibireme commented 8 years ago

Fixed,增加了一些重试和的错误检查的逻辑。