diff options
author | Xinchen Hui <laruence@gmail.com> | 2014-04-24 21:14:36 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2014-04-24 21:14:36 +0800 |
commit | 9fe853130951cff085907c0ac136edd31ec52288 (patch) | |
tree | fa894428745975ec54cbc85e81a24998c21fca1a /ext/sqlite3/sqlite3.c | |
parent | 9824418c61974e4d8bef372da91e64deadbfdd9b (diff) | |
download | php-git-9fe853130951cff085907c0ac136edd31ec52288.tar.gz |
Various bugs fixed
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
-rw-r--r-- | ext/sqlite3/sqlite3.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index f5449ca943..bfbb3fbdd1 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1455,48 +1455,49 @@ PHP_METHOD(sqlite3stmt, execute) if (stmt_obj->bound_params) { ZEND_HASH_FOREACH_PTR(stmt_obj->bound_params, param) { - zval parameter; - ZVAL_COPY_VALUE(¶meter, ¶m->parameter); - - if (Z_ISREF_P(¶meter)) { - ZVAL_DUP(¶meter, Z_REFVAL(parameter)); + zval *parameter; + /* parameter must be a reference? */ + if (Z_ISREF(param->parameter)) { + parameter = Z_REFVAL(param->parameter); + } else { + parameter = ¶m->parameter; } /* If the ZVAL is null then it should be bound as that */ - if (Z_TYPE(parameter) == IS_NULL) { + if (Z_TYPE_P(parameter) == IS_NULL) { sqlite3_bind_null(stmt_obj->stmt, param->param_number); continue; } switch (param->type) { case SQLITE_INTEGER: - convert_to_long(¶meter); + convert_to_long(parameter); #if LONG_MAX > 2147483647 - sqlite3_bind_int64(stmt_obj->stmt, param->param_number, Z_LVAL(parameter)); + sqlite3_bind_int64(stmt_obj->stmt, param->param_number, Z_LVAL_P(parameter)); #else - sqlite3_bind_int(stmt_obj->stmt, param->param_number, Z_LVAL(parameter)); + sqlite3_bind_int(stmt_obj->stmt, param->param_number, Z_LVAL_P(parameter)); #endif break; case SQLITE_FLOAT: /* convert_to_double(parameter);*/ - sqlite3_bind_double(stmt_obj->stmt, param->param_number, Z_DVAL(parameter)); + sqlite3_bind_double(stmt_obj->stmt, param->param_number, Z_DVAL_P(parameter)); break; case SQLITE_BLOB: { php_stream *stream = NULL; zend_string *buffer; - if (Z_TYPE(parameter) == IS_RESOURCE) { - php_stream_from_zval_no_verify(stream, ¶meter); + if (Z_TYPE_P(parameter) == IS_RESOURCE) { + php_stream_from_zval_no_verify(stream, parameter); if (stream == NULL) { php_sqlite3_error(stmt_obj->db_obj, "Unable to read stream for parameter %ld", param->param_number); RETURN_FALSE; } buffer = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0); } else { - convert_to_string(¶meter); - buffer = Z_STR(parameter); + convert_to_string(parameter); + buffer = Z_STR_P(parameter); } sqlite3_bind_blob(stmt_obj->stmt, param->param_number, buffer->val, buffer->len, SQLITE_TRANSIENT); @@ -1508,8 +1509,8 @@ PHP_METHOD(sqlite3stmt, execute) } case SQLITE3_TEXT: - convert_to_string(¶meter); - sqlite3_bind_text(stmt_obj->stmt, param->param_number, Z_STRVAL(parameter), Z_STRLEN(parameter), SQLITE_STATIC); + convert_to_string(parameter); + sqlite3_bind_text(stmt_obj->stmt, param->param_number, Z_STRVAL_P(parameter), Z_STRLEN_P(parameter), SQLITE_STATIC); break; case SQLITE_NULL: |