Merge "Throw clear error if a row doesn't fit into CursorWindow"
diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp
index c3f9bf7..1efff7f 100644
--- a/core/jni/android_database_SQLiteConnection.cpp
+++ b/core/jni/android_database_SQLiteConnection.cpp
@@ -765,6 +765,14 @@
if (startPos > totalRows) {
ALOGE("startPos %d > actual rows %d", startPos, totalRows);
}
+ if (totalRows > 0 && addedRows == 0) {
+ String8 msg;
+ msg.appendFormat("Row too big to fit into CursorWindow requiredPos=%d, totalRows=%d",
+ requiredPos, totalRows);
+ throw_sqlite3_exception(env, SQLITE_TOOBIG, NULL, msg.string());
+ return 0;
+ }
+
jlong result = jlong(startPos) << 32 | jlong(totalRows);
return result;
}