Browse Source

Fixed sqlite crashes

main
M66B 6 years ago
parent
commit
8e9aef4ea0
2 changed files with 16 additions and 14 deletions
  1. +7
    -5
      app/src/main/java/eu/faircode/email/DB.java
  2. +9
    -9
      app/src/main/java/eu/faircode/email/FragmentCompose.java

+ 7
- 5
app/src/main/java/eu/faircode/email/DB.java View File

@ -79,14 +79,16 @@ public abstract class DB extends RoomDatabase {
sInstance = migrate(Room
.databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME)
.setJournalMode(JournalMode.WRITE_AHEAD_LOGGING));
return sInstance;
}
public static DB getBlockingInstance(Context context) {
return migrate(Room
.databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME)
.setJournalMode(JournalMode.WRITE_AHEAD_LOGGING)
.allowMainThreadQueries());
@Override
public void beginTransaction() {
// This is a workaround for sqlite crashing on some devices
// Confusingly, the journal mode needs to be set to write ahead logging first for this to work
getOpenHelper().setWriteAheadLoggingEnabled(false);
super.beginTransaction();
}
private static DB migrate(RoomDatabase.Builder<DB> builder) {


+ 9
- 9
app/src/main/java/eu/faircode/email/FragmentCompose.java View File

@ -900,15 +900,6 @@ public class FragmentCompose extends FragmentEx {
String pbody = "<pre>" + body.replaceAll("\\r?\\n", "<br />") + "</pre>";
// Check data
if (action == R.id.action_send) {
if (draft.identity == null)
throw new IllegalArgumentException(context.getString(R.string.title_from_missing));
if (draft.to == null && draft.cc == null && draft.bcc == null)
throw new IllegalArgumentException(context.getString(R.string.title_to_missing));
}
try {
db.beginTransaction();
@ -940,6 +931,15 @@ public class FragmentCompose extends FragmentEx {
db.message().updateMessage(draft);
draft.write(context, pbody);
// Check data
if (action == R.id.action_send) {
if (draft.identity == null)
throw new IllegalArgumentException(context.getString(R.string.title_from_missing));
if (draft.to == null && draft.cc == null && draft.bcc == null)
throw new IllegalArgumentException(context.getString(R.string.title_to_missing));
}
// Save message ID
String msgid = draft.msgid;


Loading…
Cancel
Save