Skip to content

Commit 75437a5

Browse files
committed
Change signature of property handlers
1 parent d3f8159 commit 75437a5

File tree

6 files changed

+85
-98
lines changed

6 files changed

+85
-98
lines changed

ext/mysqli/mysqli.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ zend_class_entry *mysqli_warning_class_entry;
6767
zend_class_entry *mysqli_exception_class_entry;
6868

6969

70-
typedef zval *(*mysqli_read_t)(mysqli_object *obj, zval *rv);
70+
typedef int (*mysqli_read_t)(mysqli_object *obj, zval *rv);
7171
typedef int (*mysqli_write_t)(mysqli_object *obj, zval *newval);
7272

7373
typedef struct _mysqli_prop_handler {
@@ -279,17 +279,19 @@ static void mysqli_warning_free_storage(zend_object *object)
279279
/* }}} */
280280

281281
/* {{{ mysqli_read_na */
282-
static zval *mysqli_read_na(mysqli_object *obj, zval *retval)
282+
static int mysqli_read_na(mysqli_object *obj, zval *retval)
283283
{
284284
zend_throw_error(NULL, "Cannot read property");
285-
return NULL;
285+
286+
return FAILURE;
286287
}
287288
/* }}} */
288289

289290
/* {{{ mysqli_write_na */
290291
static int mysqli_write_na(mysqli_object *obj, zval *newval)
291292
{
292293
zend_throw_error(NULL, "Cannot write property");
294+
293295
return FAILURE;
294296
}
295297
/* }}} */
@@ -303,17 +305,14 @@ zval *mysqli_read_property(zend_object *object, zend_string *name, int type, voi
303305

304306
obj = php_mysqli_fetch_object(object);
305307

306-
if (type == BP_VAR_IS && !obj->ptr) {
307-
return &EG(uninitialized_zval);
308-
}
309-
310308
if (obj->prop_handler != NULL) {
311309
hnd = zend_hash_find_ptr(obj->prop_handler, name);
312310
}
313311

314312
if (hnd) {
315-
retval = hnd->read_func(obj, rv);
316-
if (retval == NULL) {
313+
if (hnd->read_func(obj, rv) == SUCCESS) {
314+
retval = rv;
315+
} else {
317316
retval = &EG(uninitialized_zval);
318317
}
319318
} else {

ext/mysqli/mysqli_driver.c

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
#include "mysqli_fe.h"
2929

3030
#define MAP_PROPERTY_MYG_BOOL_READ(name, value) \
31-
static zval *name(mysqli_object *obj, zval *retval) \
31+
static int name(mysqli_object *obj, zval *retval) \
3232
{ \
3333
ZVAL_BOOL(retval, MyG(value)); \
34-
return retval; \
34+
return SUCCESS; \
3535
} \
3636

3737
#define MAP_PROPERTY_MYG_BOOL_WRITE(name, value) \
@@ -42,10 +42,10 @@ static int name(mysqli_object *obj, zval *value) \
4242
} \
4343

4444
#define MAP_PROPERTY_MYG_LONG_READ(name, value) \
45-
static zval *name(mysqli_object *obj, zval *retval) \
45+
static int name(mysqli_object *obj, zval *retval) \
4646
{ \
4747
ZVAL_LONG(retval, MyG(value)); \
48-
return retval; \
48+
return SUCCESS; \
4949
} \
5050

5151
#define MAP_PROPERTY_MYG_LONG_WRITE(name, value) \
@@ -56,10 +56,10 @@ static int name(mysqli_object *obj, zval *value) \
5656
} \
5757

5858
#define MAP_PROPERTY_MYG_STRING_READ(name, value) \
59-
static zval *name(mysqli_object *obj, zval *retval) \
59+
static int name(mysqli_object *obj, zval *retval) \
6060
{ \
6161
ZVAL_STRING(retval, MyG(value)); \
62-
return retval; \
62+
return SUCESS; \
6363
} \
6464

6565
#define MAP_PROPERTY_MYG_STRING_WRITE(name, value) \
@@ -80,34 +80,38 @@ static int driver_report_write(mysqli_object *obj, zval *value)
8080
/* }}} */
8181

8282
/* {{{ property driver_embedded_read */
83-
static zval *driver_embedded_read(mysqli_object *obj, zval *retval)
83+
static int driver_embedded_read(mysqli_object *obj, zval *retval)
8484
{
8585
ZVAL_FALSE(retval);
86-
return retval;
86+
87+
return SUCCESS;
8788
}
8889
/* }}} */
8990

9091
/* {{{ property driver_client_version_read */
91-
static zval *driver_client_version_read(mysqli_object *obj, zval *retval)
92+
static int driver_client_version_read(mysqli_object *obj, zval *retval)
9293
{
9394
ZVAL_LONG(retval, MYSQL_VERSION_ID);
94-
return retval;
95+
96+
return SUCCESS;
9597
}
9698
/* }}} */
9799

98100
/* {{{ property driver_client_info_read */
99-
static zval *driver_client_info_read(mysqli_object *obj, zval *retval)
101+
static int driver_client_info_read(mysqli_object *obj, zval *retval)
100102
{
101103
ZVAL_STRING(retval, (char *)mysql_get_client_info());
102-
return retval;
104+
105+
return SUCCESS;
103106
}
104107
/* }}} */
105108

106109
/* {{{ property driver_driver_version_read */
107-
static zval *driver_driver_version_read(mysqli_object *obj, zval *retval)
110+
static int driver_driver_version_read(mysqli_object *obj, zval *retval)
108111
{
109112
ZVAL_LONG(retval, MYSQLI_VERSION_ID);
110-
return retval;
113+
114+
return SUCCESS;
111115
}
112116
/* }}} */
113117

ext/mysqli/mysqli_prop.c

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@
3131
if (!obj->ptr || ((MYSQLI_RESOURCE *)obj->ptr)->status < value ) { \
3232
php_error_docref(NULL, E_WARNING, "Property access is not allowed yet"); \
3333
ZVAL_FALSE(retval); \
34-
return retval; \
34+
return SUCCESS; \
3535
} \
3636

3737
#define MYSQLI_GET_MYSQL(statusval) \
3838
MYSQL *p; \
3939
if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
4040
zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));\
41-
return NULL; \
41+
return FAILURE; \
4242
} else { \
4343
CHECK_STATUS(statusval);\
4444
p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;\
@@ -48,25 +48,24 @@ if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
4848
MYSQL_RES *p; \
4949
if (!obj->ptr) { \
5050
zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));\
51-
return NULL; \
51+
return FAILURE; \
5252
} else { \
5353
CHECK_STATUS(statusval);\
5454
p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; \
5555
}
5656

57-
5857
#define MYSQLI_GET_STMT(statusval) \
5958
MYSQL_STMT *p; \
6059
if (!obj->ptr) { \
6160
zend_throw_error(NULL, "%s object is already closed", ZSTR_VAL(obj->zo.ce->name));\
62-
return NULL; \
61+
return FAILURE; \
6362
} else { \
64-
CHECK_STATUS(statusval);\
65-
p = (MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt;\
63+
CHECK_STATUS(statusval); \
64+
p = (MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt; \
6665
}
6766

6867
#define MYSQLI_MAP_PROPERTY_FUNC_LONG( __func, __int_func, __get_type, __ret_type, __ret_type_sprint_mod)\
69-
static zval *__func(mysqli_object *obj, zval *retval) \
68+
static int __func(mysqli_object *obj, zval *retval) \
7069
{\
7170
__ret_type l;\
7271
__get_type;\
@@ -79,12 +78,12 @@ static zval *__func(mysqli_object *obj, zval *retval) \
7978
} else { \
8079
ZVAL_NEW_STR(retval, strpprintf(0, __ret_type_sprint_mod, l)); \
8180
} \
82-
}\
83-
return retval;\
81+
} \
82+
return SUCCESS; \
8483
}
8584

8685
#define MYSQLI_MAP_PROPERTY_FUNC_STRING(__func, __int_func, __get_type)\
87-
static zval *__func(mysqli_object *obj, zval *retval)\
86+
static int __func(mysqli_object *obj, zval *retval)\
8887
{\
8988
char *c;\
9089
__get_type;\
@@ -98,48 +97,52 @@ static zval *__func(mysqli_object *obj, zval *retval)\
9897
ZVAL_STRING(retval, c);\
9998
}\
10099
}\
101-
return retval; \
100+
return SUCCESS; \
102101
}
103102

104103
/* {{{ property link_client_version_read */
105-
static zval *link_client_version_read(mysqli_object *obj, zval *retval)
104+
static int link_client_version_read(mysqli_object *obj, zval *retval)
106105
{
107106
ZVAL_LONG(retval, MYSQL_VERSION_ID);
108-
return retval;
107+
108+
return SUCCESS;
109109
}
110110
/* }}} */
111111

112112
/* {{{ property link_client_info_read */
113-
static zval *link_client_info_read(mysqli_object *obj, zval *retval)
113+
static int link_client_info_read(mysqli_object *obj, zval *retval)
114114
{
115115
CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
116116
ZVAL_STRING(retval, MYSQL_SERVER_VERSION);
117-
return retval;
117+
118+
return SUCCESS;
118119
}
119120
/* }}} */
120121

121122
/* {{{ property link_connect_errno_read */
122-
static zval *link_connect_errno_read(mysqli_object *obj, zval *retval)
123+
static int link_connect_errno_read(mysqli_object *obj, zval *retval)
123124
{
124125
ZVAL_LONG(retval, (zend_long)MyG(error_no));
125-
return retval;
126+
127+
return SUCCESS;
126128
}
127129
/* }}} */
128130

129131
/* {{{ property link_connect_error_read */
130-
static zval *link_connect_error_read(mysqli_object *obj, zval *retval)
132+
static int link_connect_error_read(mysqli_object *obj, zval *retval)
131133
{
132134
if (MyG(error_msg)) {
133135
ZVAL_STRING(retval, MyG(error_msg));
134136
} else {
135137
ZVAL_NULL(retval);
136138
}
137-
return retval;
139+
140+
return SUCCESS;
138141
}
139142
/* }}} */
140143

141144
/* {{{ property link_affected_rows_read */
142-
static zval *link_affected_rows_read(mysqli_object *obj, zval *retval)
145+
static int link_affected_rows_read(mysqli_object *obj, zval *retval)
143146
{
144147
MY_MYSQL *mysql;
145148
my_ulonglong rc;
@@ -157,7 +160,7 @@ static zval *link_affected_rows_read(mysqli_object *obj, zval *retval)
157160

158161
if (rc == (my_ulonglong) -1) {
159162
ZVAL_LONG(retval, -1);
160-
return retval;
163+
return SUCCESS;
161164
}
162165

163166
if (rc < ZEND_LONG_MAX) {
@@ -166,12 +169,13 @@ static zval *link_affected_rows_read(mysqli_object *obj, zval *retval)
166169
ZVAL_NEW_STR(retval, strpprintf(0, MYSQLI_LLU_SPEC, rc));
167170
}
168171
}
169-
return retval;
172+
173+
return SUCCESS;
170174
}
171175
/* }}} */
172176

173177
/* {{{ property link_error_list_read */
174-
static zval *link_error_list_read(mysqli_object *obj, zval *retval)
178+
static int link_error_list_read(mysqli_object *obj, zval *retval)
175179
{
176180
MY_MYSQL *mysql;
177181

@@ -211,7 +215,7 @@ static zval *link_error_list_read(mysqli_object *obj, zval *retval)
211215
ZVAL_EMPTY_ARRAY(retval);
212216
}
213217

214-
return retval;
218+
return SUCCESS;
215219
}
216220
/* }}} */
217221

@@ -232,7 +236,7 @@ MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQ
232236
/* result properties */
233237

234238
/* {{{ property result_type_read */
235-
static zval *result_type_read(mysqli_object *obj, zval *retval)
239+
static int result_type_read(mysqli_object *obj, zval *retval)
236240
{
237241
MYSQL_RES *p;
238242

@@ -244,12 +248,13 @@ static zval *result_type_read(mysqli_object *obj, zval *retval)
244248
} else {
245249
ZVAL_LONG(retval, mysqli_result_is_unbuffered(p) ? MYSQLI_USE_RESULT:MYSQLI_STORE_RESULT);
246250
}
247-
return retval;
251+
252+
return SUCCESS;
248253
}
249254
/* }}} */
250255

251256
/* {{{ property result_lengths_read */
252-
static zval *result_lengths_read(mysqli_object *obj, zval *retval)
257+
static int result_lengths_read(mysqli_object *obj, zval *retval)
253258
{
254259
MYSQL_RES *p;
255260
#if defined(MYSQLI_USE_MYSQLND)
@@ -273,7 +278,8 @@ static zval *result_lengths_read(mysqli_object *obj, zval *retval)
273278
add_index_long(retval, i, ret[i]);
274279
}
275280
}
276-
return retval;
281+
282+
return SUCCESS;
277283
}
278284
/* }}} */
279285

@@ -284,7 +290,7 @@ MYSQLI_MAP_PROPERTY_FUNC_LONG(result_num_rows_read, mysql_num_rows, MYSQLI_GET_R
284290
/* statement properties */
285291

286292
/* {{{ property stmt_id_read */
287-
static zval *stmt_id_read(mysqli_object *obj, zval *retval)
293+
static int stmt_id_read(mysqli_object *obj, zval *retval)
288294
{
289295
MY_STMT *p;
290296

@@ -297,12 +303,13 @@ static zval *stmt_id_read(mysqli_object *obj, zval *retval)
297303
} else {
298304
ZVAL_LONG(retval, mysqli_stmt_get_id(p->stmt));
299305
}
300-
return retval;
306+
307+
return SUCCESS;
301308
}
302309
/* }}} */
303310

304311
/* {{{ property stmt_affected_rows_read */
305-
static zval *stmt_affected_rows_read(mysqli_object *obj, zval *retval)
312+
static int stmt_affected_rows_read(mysqli_object *obj, zval *retval)
306313
{
307314
MY_STMT *p;
308315
my_ulonglong rc;
@@ -318,7 +325,7 @@ static zval *stmt_affected_rows_read(mysqli_object *obj, zval *retval)
318325

319326
if (rc == (my_ulonglong) -1) {
320327
ZVAL_LONG(retval, -1);
321-
return retval;
328+
return SUCCESS;
322329
}
323330

324331
if (rc < ZEND_LONG_MAX) {
@@ -327,12 +334,13 @@ static zval *stmt_affected_rows_read(mysqli_object *obj, zval *retval)
327334
ZVAL_NEW_STR(retval, strpprintf(0, MYSQLI_LLU_SPEC, rc));
328335
}
329336
}
330-
return retval;
337+
338+
return SUCCESS;
331339
}
332340
/* }}} */
333341

334342
/* {{{ property stmt_error_list_read */
335-
static zval *stmt_error_list_read(mysqli_object *obj, zval *retval)
343+
static int stmt_error_list_read(mysqli_object *obj, zval *retval)
336344
{
337345
MY_STMT * stmt;
338346

@@ -370,7 +378,8 @@ static zval *stmt_error_list_read(mysqli_object *obj, zval *retval)
370378
} else {
371379
ZVAL_EMPTY_ARRAY(retval);
372380
}
373-
return retval;
381+
382+
return SUCCESS;
374383
}
375384
/* }}} */
376385

0 commit comments

Comments
 (0)