Skip to content

Commit fbf0e33

Browse files
Revert "modifications to open helper for RO/RW db management"
This reverts commit b994a9b.
1 parent 17687e7 commit fbf0e33

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

src/net/sqlcipher/database/SQLiteOpenHelper.java

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public abstract class SQLiteOpenHelper {
3939
private final CursorFactory mFactory;
4040
private final int mNewVersion;
4141

42-
private SQLiteDatabase mDatabaseRO, mDatabaseRW = null;
42+
private SQLiteDatabase mDatabase = null;
4343
private boolean mIsInitializing = false;
4444

4545
/**
@@ -75,8 +75,8 @@ public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int
7575
* @return a read/write database object valid until {@link #close} is called
7676
*/
7777
public synchronized SQLiteDatabase getWritableDatabase(String password) {
78-
if (mDatabaseRW != null && mDatabaseRW.isOpen()) {
79-
return mDatabaseRW; // The database is already open for business
78+
if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) {
79+
return mDatabase; // The database is already open for business
8080
}
8181

8282
if (mIsInitializing) {
@@ -91,7 +91,7 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
9191

9292
boolean success = false;
9393
SQLiteDatabase db = null;
94-
if (mDatabaseRW != null) mDatabaseRW.lock();
94+
if (mDatabase != null) mDatabase.lock();
9595
try {
9696
mIsInitializing = true;
9797
if (mName == null) {
@@ -135,13 +135,13 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
135135
} finally {
136136
mIsInitializing = false;
137137
if (success) {
138-
if (mDatabaseRW != null) {
139-
try { mDatabaseRW.close(); } catch (Exception e) { }
140-
mDatabaseRW.unlock();
138+
if (mDatabase != null) {
139+
try { mDatabase.close(); } catch (Exception e) { }
140+
mDatabase.unlock();
141141
}
142-
mDatabaseRW = db;
142+
mDatabase = db;
143143
} else {
144-
if (mDatabaseRW != null) mDatabaseRW.unlock();
144+
if (mDatabase != null) mDatabase.unlock();
145145
if (db != null) db.close();
146146
}
147147
}
@@ -161,14 +161,21 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
161161
* or {@link #close} is called.
162162
*/
163163
public synchronized SQLiteDatabase getReadableDatabase(String password) {
164-
if (mDatabaseRO != null && mDatabaseRO.isOpen()) {
165-
return mDatabaseRO; // The database is already open for business
164+
if (mDatabase != null && mDatabase.isOpen()) {
165+
return mDatabase; // The database is already open for business
166166
}
167167

168168
if (mIsInitializing) {
169169
throw new IllegalStateException("getReadableDatabase called recursively");
170170
}
171171

172+
try {
173+
return getWritableDatabase(password);
174+
} catch (SQLiteException e) {
175+
if (mName == null) throw e; // Can't open a temp database read-only!
176+
Log.e(TAG, "Couldn't open " + mName + " for writing (will try read-only):", e);
177+
}
178+
172179
SQLiteDatabase db = null;
173180
try {
174181
mIsInitializing = true;
@@ -193,11 +200,11 @@ public synchronized SQLiteDatabase getReadableDatabase(String password) {
193200

194201
onOpen(db);
195202
Log.w(TAG, "Opened " + mName + " in read-only mode");
196-
mDatabaseRO = db;
197-
return mDatabaseRO;
203+
mDatabase = db;
204+
return mDatabase;
198205
} finally {
199206
mIsInitializing = false;
200-
if (db != null && db != mDatabaseRO) db.close();
207+
if (db != null && db != mDatabase) db.close();
201208
}
202209
}
203210

@@ -207,14 +214,9 @@ public synchronized SQLiteDatabase getReadableDatabase(String password) {
207214
public synchronized void close() {
208215
if (mIsInitializing) throw new IllegalStateException("Closed during initialization");
209216

210-
if (mDatabaseRO != null && mDatabaseRO.isOpen()) {
211-
mDatabaseRO.close();
212-
mDatabaseRO = null;
213-
}
214-
215-
if (mDatabaseRW != null && mDatabaseRW.isOpen()) {
216-
mDatabaseRW.close();
217-
mDatabaseRW = null;
217+
if (mDatabase != null && mDatabase.isOpen()) {
218+
mDatabase.close();
219+
mDatabase = null;
218220
}
219221
}
220222

0 commit comments

Comments
 (0)