@@ -1064,7 +1064,7 @@ static size_t php_sqlite3_stream_write(php_stream *stream, const char *buf, size
1064
1064
{
1065
1065
php_stream_sqlite3_data * sqlite3_stream = (php_stream_sqlite3_data * ) stream -> abstract ;
1066
1066
1067
- if (sqlite3_stream -> flags == 0 ) {
1067
+ if (sqlite3_stream -> flags & SQLITE_OPEN_READONLY ) {
1068
1068
php_error_docref (NULL , E_WARNING , "Can't write to blob stream: is open as read only" );
1069
1069
return 0 ;
1070
1070
}
@@ -1221,7 +1221,7 @@ PHP_METHOD(sqlite3, openBlob)
1221
1221
zval * object = getThis ();
1222
1222
char * table , * column , * dbname = "main" , * mode = "rb" ;
1223
1223
size_t table_len , column_len , dbname_len ;
1224
- zend_long rowid , flags = 0 ;
1224
+ zend_long rowid , flags = SQLITE_OPEN_READONLY , sqlite_flags = 0 ;
1225
1225
sqlite3_blob * blob = NULL ;
1226
1226
php_stream_sqlite3_data * sqlite3_stream ;
1227
1227
php_stream * stream ;
@@ -1234,7 +1234,9 @@ PHP_METHOD(sqlite3, openBlob)
1234
1234
return ;
1235
1235
}
1236
1236
1237
- if (sqlite3_blob_open (db_obj -> db , dbname , table , column , rowid , flags , & blob ) != SQLITE_OK ) {
1237
+ sqlite_flags = (flags & SQLITE_OPEN_READWRITE ) ? 1 : 0 ;
1238
+
1239
+ if (sqlite3_blob_open (db_obj -> db , dbname , table , column , rowid , sqlite_flags , & blob ) != SQLITE_OK ) {
1238
1240
php_sqlite3_error (db_obj , "Unable to open blob: %s" , sqlite3_errmsg (db_obj -> db ));
1239
1241
RETURN_FALSE ;
1240
1242
}
@@ -1245,7 +1247,7 @@ PHP_METHOD(sqlite3, openBlob)
1245
1247
sqlite3_stream -> position = 0 ;
1246
1248
sqlite3_stream -> size = sqlite3_blob_bytes (blob );
1247
1249
1248
- if (flags != 0 ) {
1250
+ if (sqlite_flags != 0 ) {
1249
1251
mode = "r+b" ;
1250
1252
}
1251
1253
0 commit comments