81
81
82
82
#define MEMC_METHOD_FETCH_OBJECT \
83
83
i_obj = (php_memc_t *) zend_object_store_get_object( object TSRMLS_CC ); \
84
+ if (!i_obj->memc) { \
85
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Memcached constructor was not called"); \
86
+ return; \
87
+ } \
84
88
85
89
#ifndef DVAL_TO_LVAL
86
90
#ifdef _WIN64
@@ -324,14 +328,14 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
324
328
}
325
329
}
326
330
331
+ MEMC_METHOD_FETCH_OBJECT ;
332
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
333
+
327
334
if (key_len == 0 ) {
328
335
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
329
336
RETURN_FALSE ;
330
337
}
331
338
332
- MEMC_METHOD_FETCH_OBJECT ;
333
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
334
-
335
339
if (cas_token ) {
336
340
337
341
uint64_t orig_cas_flag ;
@@ -1060,14 +1064,14 @@ static void php_memc_store_impl(INTERNAL_FUNCTION_PARAMETERS, int op, zend_bool
1060
1064
server_key_len = key_len ;
1061
1065
}
1062
1066
1067
+ MEMC_METHOD_FETCH_OBJECT ;
1068
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1069
+
1063
1070
if (key_len == 0 ) {
1064
1071
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
1065
1072
RETURN_FALSE ;
1066
1073
}
1067
1074
1068
- MEMC_METHOD_FETCH_OBJECT ;
1069
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1070
-
1071
1075
if (i_obj -> compression ) {
1072
1076
/*
1073
1077
* When compression is enabled, we cannot do appends/prepends because that would
@@ -1182,14 +1186,14 @@ static void php_memc_cas_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
1182
1186
server_key_len = key_len ;
1183
1187
}
1184
1188
1189
+ MEMC_METHOD_FETCH_OBJECT ;
1190
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1191
+
1185
1192
if (key_len == 0 ) {
1186
1193
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
1187
1194
RETURN_FALSE ;
1188
1195
}
1189
1196
1190
- MEMC_METHOD_FETCH_OBJECT ;
1191
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1192
-
1193
1197
DVAL_TO_LVAL (cas_d , cas );
1194
1198
1195
1199
if (i_obj -> compression ) {
@@ -1257,14 +1261,14 @@ static void php_memc_delete_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
1257
1261
server_key_len = key_len ;
1258
1262
}
1259
1263
1264
+ MEMC_METHOD_FETCH_OBJECT ;
1265
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1266
+
1260
1267
if (key_len == 0 ) {
1261
1268
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
1262
1269
RETURN_FALSE ;
1263
1270
}
1264
1271
1265
- MEMC_METHOD_FETCH_OBJECT ;
1266
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1267
-
1268
1272
status = memcached_delete_by_key (i_obj -> memc , server_key , server_key_len , key ,
1269
1273
key_len , expiration );
1270
1274
@@ -1306,6 +1310,9 @@ static void php_memc_incdec_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool incr)
1306
1310
return ;
1307
1311
}
1308
1312
1313
+ MEMC_METHOD_FETCH_OBJECT ;
1314
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1315
+
1309
1316
if (key_len == 0 ) {
1310
1317
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
1311
1318
RETURN_FALSE ;
@@ -1316,9 +1323,6 @@ static void php_memc_incdec_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool incr)
1316
1323
RETURN_FALSE ;
1317
1324
}
1318
1325
1319
- MEMC_METHOD_FETCH_OBJECT ;
1320
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1321
-
1322
1326
if (incr ) {
1323
1327
status = memcached_increment (i_obj -> memc , key , key_len , (unsigned int )offset , & value );
1324
1328
} else {
@@ -1473,14 +1477,14 @@ PHP_METHOD(Memcached, getServerByKey)
1473
1477
return ;
1474
1478
}
1475
1479
1480
+ MEMC_METHOD_FETCH_OBJECT ;
1481
+ MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1482
+
1476
1483
if (server_key_len == 0 ) {
1477
1484
MEMC_G (rescode ) = MEMCACHED_BAD_KEY_PROVIDED ;
1478
1485
RETURN_FALSE ;
1479
1486
}
1480
1487
1481
- MEMC_METHOD_FETCH_OBJECT ;
1482
- MEMC_G (rescode ) = MEMCACHED_SUCCESS ;
1483
-
1484
1488
server = memcached_server_by_key (i_obj -> memc , server_key , server_key_len , & error );
1485
1489
if (server == NULL ) {
1486
1490
php_memc_handle_error (error TSRMLS_CC );
@@ -1758,7 +1762,9 @@ static PHP_METHOD(Memcached, getResultCode)
1758
1762
/* {{{ constructor/destructor */
1759
1763
static void php_memc_destroy (php_memc_t * i_obj TSRMLS_DC )
1760
1764
{
1761
- memcached_free (i_obj -> memc );
1765
+ if (i_obj -> memc ) {
1766
+ memcached_free (i_obj -> memc );
1767
+ }
1762
1768
1763
1769
pefree (i_obj , i_obj -> is_persistent );
1764
1770
}
0 commit comments