summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_driver.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2008-03-18 16:57:31 +0000
committerAndrey Hristov <andrey@php.net>2008-03-18 16:57:31 +0000
commitcaf3e9c3f1c329b496b00501b8baef4dbfc66b4f (patch)
tree256aa613a7db94da81fb7ecbda0efaf040e23d3d /ext/mysqli/mysqli_driver.c
parentbd9e02695154548e66ebec844c21f900f88ae7c0 (diff)
downloadphp-git-caf3e9c3f1c329b496b00501b8baef4dbfc66b4f.tar.gz
Fixed a bunch of bugs reported in
Bug #44352 mysqli_connect_error() false negative for host errors From now on the mysqli object doesn't have that magic properties, like error, which were readable but not visible through isset(), property_exists() and var_dump(). All other ext/mysqli classes were fixed too. Now it will be easier to debug mysqli based applications.
Diffstat (limited to 'ext/mysqli/mysqli_driver.c')
-rw-r--r--ext/mysqli/mysqli_driver.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/ext/mysqli/mysqli_driver.c b/ext/mysqli/mysqli_driver.c
index 0a4c5a2ec7..4cbe668772 100644
--- a/ext/mysqli/mysqli_driver.c
+++ b/ext/mysqli/mysqli_driver.c
@@ -32,7 +32,7 @@
#define MAP_PROPERTY_MYG_BOOL_READ(name, value) \
static int name(mysqli_object *obj, zval **retval TSRMLS_DC) \
{ \
- ALLOC_ZVAL(*retval); \
+ MAKE_STD_ZVAL(*retval); \
ZVAL_BOOL(*retval, MyG(value)); \
return SUCCESS; \
} \
@@ -47,7 +47,7 @@ static int name(mysqli_object *obj, zval *value TSRMLS_DC) \
#define MAP_PROPERTY_MYG_LONG_READ(name, value) \
static int name(mysqli_object *obj, zval **retval TSRMLS_DC) \
{ \
- ALLOC_ZVAL(*retval); \
+ MAKE_STD_ZVAL(*retval); \
ZVAL_LONG(*retval, MyG(value)); \
return SUCCESS; \
} \
@@ -62,7 +62,7 @@ static int name(mysqli_object *obj, zval *value TSRMLS_DC) \
#define MAP_PROPERTY_MYG_STRING_READ(name, value) \
static int name(mysqli_object *obj, zval **retval TSRMLS_DC) \
{ \
- ALLOC_ZVAL(*retval); \
+ MAKE_STD_ZVAL(*retval); \
ZVAL_STRING(*retval, MyG(value), 1); \
return SUCCESS; \
} \
@@ -87,7 +87,7 @@ static int driver_report_write(mysqli_object *obj, zval *value TSRMLS_DC)
/* {{{ property driver_embedded_read */
static int driver_embedded_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
- ALLOC_ZVAL(*retval);
+ MAKE_STD_ZVAL(*retval);
#ifdef HAVE_EMBEDDED_MYSQLI
ZVAL_BOOL(*retval, 1);
#else
@@ -100,7 +100,7 @@ static int driver_embedded_read(mysqli_object *obj, zval **retval TSRMLS_DC)
/* {{{ property driver_client_version_read */
static int driver_client_version_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
- ALLOC_ZVAL(*retval);
+ MAKE_STD_ZVAL(*retval);
ZVAL_LONG(*retval, MYSQL_VERSION_ID);
return SUCCESS;
}
@@ -109,7 +109,7 @@ static int driver_client_version_read(mysqli_object *obj, zval **retval TSRMLS_D
/* {{{ property driver_client_info_read */
static int driver_client_info_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
- ALLOC_ZVAL(*retval);
+ MAKE_STD_ZVAL(*retval);
ZVAL_STRING(*retval, (char *)mysql_get_client_info(), 1);
return SUCCESS;
}
@@ -118,7 +118,7 @@ static int driver_client_info_read(mysqli_object *obj, zval **retval TSRMLS_DC)
/* {{{ property driver_driver_version_read */
static int driver_driver_version_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
- ALLOC_ZVAL(*retval);
+ MAKE_STD_ZVAL(*retval);
ZVAL_LONG(*retval, MYSQLI_VERSION_ID);
return SUCCESS;
}
@@ -141,14 +141,27 @@ ZEND_FUNCTION(mysqli_driver_construct)
}
const mysqli_property_entry mysqli_driver_property_entries[] = {
- {"client_info", driver_client_info_read, NULL},
- {"client_version", driver_client_version_read, NULL},
- {"driver_version", driver_driver_version_read, NULL},
- {"embedded", driver_embedded_read, NULL},
- {"reconnect", driver_reconnect_read, driver_reconnect_write},
- {"report_mode", driver_report_read, driver_report_write},
- {NULL, NULL, NULL}
+ {"client_info", sizeof("client_info") - 1, driver_client_info_read, NULL},
+ {"client_version", sizeof("client_version") - 1, driver_client_version_read, NULL},
+ {"driver_version", sizeof("driver_version") - 1, driver_driver_version_read, NULL},
+ {"embedded", sizeof("embedded") - 1, driver_embedded_read, NULL},
+ {"reconnect", sizeof("reconnect") - 1, driver_reconnect_read, driver_reconnect_write},
+ {"report_mode", sizeof("report_mode") - 1, driver_report_read, driver_report_write},
+ {NULL, 0, NULL, NULL}
+};
+
+/* {{{ mysqli_warning_property_info_entries */
+zend_property_info mysqli_driver_property_info_entries[] = {
+ {ZEND_ACC_PUBLIC, "client_info", sizeof("client_info") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "client_version", sizeof("client_version") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "driver_version", sizeof("driver_version") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "embedded", sizeof("embedded") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "reconnect", sizeof("reconnect") - 1, 0, NULL, 0, NULL},
+ {ZEND_ACC_PUBLIC, "report_mode", sizeof("report_mode") - 1, 0, NULL, 0, NULL},
+ {0, NULL, 0, 0, NULL, 0, NULL},
};
+/* }}} */
+
/* {{{ mysqli_driver_methods[]
*/