diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/sqlite3/sqlite3.c | 15 | ||||
-rw-r--r-- | ext/sqlite3/tests/sqlite3_open_empty_string.phpt | 9 |
3 files changed, 13 insertions, 15 deletions
@@ -65,6 +65,10 @@ PHP NEWS . Fixed bug #72646 (SplFileObject::getCsvControl does not return the escape character). (cmb) +- SQLite3: + . Implemented FR #72653 (SQLite should allow opening with empty filename). + (cmb) + 21 Jul 2016, PHP 5.6.24 - Core: diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index c901e536a0..54ec73d6ac 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -118,13 +118,11 @@ PHP_METHOD(sqlite3, open) if (db_obj->initialised) { zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Already initialised DB Object", 0 TSRMLS_CC); - } - - if (strlen(filename) != filename_len) { return; } - if (filename_len != sizeof(":memory:")-1 || - memcmp(filename, ":memory:", sizeof(":memory:")-1) != 0) { + + if (filename_len != 0 && (filename_len != sizeof(":memory:")-1 || + memcmp(filename, ":memory:", sizeof(":memory:")-1) != 0)) { if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) { zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Unable to expand filepath", 0 TSRMLS_CC); return; @@ -144,7 +142,8 @@ PHP_METHOD(sqlite3, open) return; } } else { - fullpath = estrdup(filename); + /* filename equals "" or ":memory:" */ + fullpath = filename; } #if SQLITE_VERSION_NUMBER >= 3005000 @@ -153,7 +152,7 @@ PHP_METHOD(sqlite3, open) if (sqlite3_open(fullpath, &(db_obj->db)) != SQLITE_OK) { #endif zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 TSRMLS_CC, "Unable to open database: %s", sqlite3_errmsg(db_obj->db)); - if (fullpath) { + if (fullpath != filename) { efree(fullpath); } return; @@ -178,7 +177,7 @@ PHP_METHOD(sqlite3, open) sqlite3_set_authorizer(db_obj->db, php_sqlite3_authorizer, NULL); } - if (fullpath) { + if (fullpath != filename) { efree(fullpath); } } diff --git a/ext/sqlite3/tests/sqlite3_open_empty_string.phpt b/ext/sqlite3/tests/sqlite3_open_empty_string.phpt index 86868eeed1..940056bf0a 100644 --- a/ext/sqlite3/tests/sqlite3_open_empty_string.phpt +++ b/ext/sqlite3/tests/sqlite3_open_empty_string.phpt @@ -7,13 +7,8 @@ Thijs Feryn <thijs@feryn.eu> <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?> --FILE-- <?php -try{ - $db = new SQLite3(''); -} catch(Exception $e) { - echo $e->getMessage().PHP_EOL; -} +$db = new SQLite3(''); echo "Done\n"; ?> ---EXPECTF-- -Unable to expand filepath +--EXPECT-- Done |