24
24
#undef _NDEBUG
25
25
#include <assert.h>
26
26
27
- #define MEMC_GET_CB (cb_type ) (MEMC_G(server. callbacks)[cb_type])
27
+ #define MEMC_GET_CB (cb_type ) (MEMC_SERVER_G( callbacks)[cb_type])
28
28
#define MEMC_HAS_CB (cb_type ) (MEMC_GET_CB(cb_type).fci.size > 0)
29
29
30
30
#define MEMC_MAKE_ZVAL_COOKIE (my_zcookie , my_ptr ) \
37
37
#define MEMC_MAKE_RESULT_CAS (my_zresult_cas , my_result_cas ) \
38
38
do { \
39
39
my_result_cas = 0; \
40
- my_result_cas = zval_get_double(my_zresult_cas); \
40
+ my_result_cas = zval_get_double(& my_zresult_cas); \
41
41
} while (0)
42
42
43
43
@@ -56,27 +56,22 @@ typedef struct {
56
56
} php_memc_client_t ;
57
57
58
58
static
59
- long s_invoke_php_callback (php_memc_server_cb_t * cb , zval * * * params , ssize_t param_count )
59
+ long s_invoke_php_callback (php_memc_server_cb_t * cb , zval * params , ssize_t param_count )
60
60
{
61
- long retval = PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND ;
62
- zval * retval_ptr = NULL ;
61
+ zval * retval = NULL ;
63
62
64
- cb -> fci .params = params ;
63
+ cb -> fci .retval = retval ;
64
+ cb -> fci .params = params ;
65
65
cb -> fci .param_count = param_count ;
66
-
67
- /* Call the cb */
68
- cb -> fci .no_separation = 1 ;
69
- cb -> fci .retval_ptr_ptr = & retval_ptr ;
66
+ cb -> fci .no_separation = 1 ;
70
67
71
68
if (zend_call_function (& (cb -> fci ), & (cb -> fci_cache )) == FAILURE ) {
72
- char * buf = php_memc_printable_func (& (cb -> fci ), & (cb -> fci_cache ));
69
+ char * buf = php_memc_printable_func (& (cb -> fci ), & (cb -> fci_cache ));
73
70
php_error_docref (NULL , E_WARNING , "Failed to invoke callback %s()" , buf );
74
71
efree (buf );
75
72
}
76
- if (retval_ptr ) {
77
- retval = zval_get_long (retval_ptr );
78
- }
79
- return retval ;
73
+
74
+ return retval == NULL ? PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND : zval_get_long (retval );
80
75
}
81
76
82
77
// memcached protocol callbacks
@@ -217,7 +212,7 @@ protocol_binary_response_status s_incr_decr_handler (php_memc_event_t event, con
217
212
218
213
retval = s_invoke_php_callback (& MEMC_GET_CB (event ), params , 7 );
219
214
220
- * result = (uint64_t )zval_get_long (zresult );
215
+ * result = (uint64_t )zval_get_long (& zresult );
221
216
222
217
MEMC_MAKE_RESULT_CAS (zresult_cas , * result_cas );
223
218
@@ -301,7 +296,7 @@ protocol_binary_response_status s_flush_handler(const void *cookie, uint32_t whe
301
296
MEMC_MAKE_ZVAL_COOKIE (zcookie , cookie );
302
297
303
298
ZVAL_COPY (& params [0 ], & zcookie );
304
- ZVAL_COPY (& params [1 ], & zwhen )
299
+ ZVAL_COPY (& params [1 ], & zwhen );
305
300
306
301
retval = s_invoke_php_callback (& MEMC_GET_CB (MEMC_SERVER_ON_FLUSH ), params , 2 );
307
302
@@ -561,7 +556,7 @@ protocol_binary_response_status s_version_handler (const void *cookie,
561
556
convert_to_string (& zversion );
562
557
}
563
558
564
- retval = response_handler (cookie , Z_STRVAL_P (zversion ), (uint32_t ) Z_STRLEN_P (zversion ));
559
+ retval = response_handler (cookie , Z_STRVAL (zversion ), (uint32_t ) Z_STRLEN (zversion ));
565
560
}
566
561
567
562
zval_ptr_dtor (& params [0 ]);
@@ -592,7 +587,7 @@ void s_handle_memcached_event (evutil_socket_t fd, short what, void *arg)
592
587
socklen_t addr_in_len = sizeof (addr_in );
593
588
594
589
if (getpeername (fd , (struct sockaddr * ) & addr_in , & addr_in_len ) == 0 ) {
595
- ZVAL_STRING (& zremoteip , inet_ntoa (addr_in .sin_addr ), 1 );
590
+ ZVAL_STRING (& zremoteip , inet_ntoa (addr_in .sin_addr ));
596
591
ZVAL_LONG (& zremoteport , ntohs (addr_in .sin_port ));
597
592
} else {
598
593
php_error_docref (NULL , E_WARNING , "getpeername failed: %s" , strerror (errno ));
0 commit comments