@@ -103,10 +103,10 @@ static ZEND_MINIT_FUNCTION(msgpack) /* {{{ */ {
103
103
#endif
104
104
105
105
#if defined(HAVE_APCU_SUPPORT )
106
- apc_register_serializer ("msgpack" ,
107
- APC_SERIALIZER_NAME (msgpack ),
108
- APC_UNSERIALIZER_NAME (msgpack ),
109
- NULL TSRMLS_CC );
106
+ apc_register_serializer ("msgpack" ,
107
+ APC_SERIALIZER_NAME (msgpack ),
108
+ APC_UNSERIALIZER_NAME (msgpack ),
109
+ NULL );
110
110
#endif
111
111
112
112
msgpack_init_class ();
@@ -134,7 +134,9 @@ static ZEND_MINFO_FUNCTION(msgpack) /* {{{ */ {
134
134
php_info_print_table_row (2 , "Session Support" , "enabled" );
135
135
#endif
136
136
#if defined(HAVE_APCU_SUPPORT )
137
- php_info_print_table_row (2 , "APCu Serializer Support" , "enabled" );
137
+ php_info_print_table_row (2 , "MessagePack APCu Serializer ABI" , APC_SERIALIZER_ABI );
138
+ #else
139
+ php_info_print_table_row (2 , "MessagePack APCu Serializer ABI" , "no" );
138
140
#endif
139
141
php_info_print_table_row (2 , "extension Version" , PHP_MSGPACK_VERSION );
140
142
php_info_print_table_row (2 , "header Version" , MSGPACK_VERSION );
@@ -327,49 +329,25 @@ static ZEND_FUNCTION(msgpack_unserialize) /* {{{ */ {
327
329
/* }}} */
328
330
329
331
#if defined(HAVE_APCU_SUPPORT )
330
- /* {{{ apc_serialize function */
331
- static int APC_SERIALIZER_NAME (msgpack ) ( APC_SERIALIZER_ARGS ) {
332
- (void )config ;
333
-
334
- smart_str res = {0 };
335
- msgpack_serialize_data_t var_hash ;
336
-
337
- msgpack_serialize_var_init (& var_hash );
338
- msgpack_serialize_zval (& res , (zval * ) value , var_hash );
339
- msgpack_serialize_var_destroy (& var_hash );
340
-
341
- smart_str_0 (& res );
342
-
343
- * buf = (unsigned char * ) estrndup (ZSTR_VAL (res .s ), ZSTR_LEN (res .s ));
344
- * buf_len = ZSTR_LEN (res .s );
345
-
346
- return 1 ;
332
+ static int APC_SERIALIZER_NAME (msgpack ) ( APC_SERIALIZER_ARGS ) /* {{{ */ {
333
+ smart_str res = {0 };
334
+ php_msgpack_serialize (& res , (zval * ) value );
335
+
336
+ if (res .s ) {
337
+ smart_str_0 (& res );
338
+ * buf = (unsigned char * ) estrndup (ZSTR_VAL (res .s ), ZSTR_LEN (res .s ));
339
+ * buf_len = ZSTR_LEN (res .s );
340
+ return 1 ;
341
+ }
342
+ return 0 ;
347
343
}
348
344
/* }}} */
349
- /* {{{ apc_unserialize function */
350
- static int APC_UNSERIALIZER_NAME (msgpack ) ( APC_UNSERIALIZER_ARGS ) {
351
- (void )config ;
352
-
353
- int ret ;
354
- msgpack_unpack_t mp ;
355
- msgpack_unserialize_data_t var_hash ;
356
- size_t off = 0 ;
357
345
358
- template_init (& mp );
359
-
360
- msgpack_unserialize_var_init (& var_hash );
361
-
362
- mp .user .retval = value ;
363
- mp .user .var_hash = & var_hash ;
364
-
365
- ret = template_execute (& mp , (char * ) buf , buf_len , & off );
366
- if (Z_TYPE_P (mp .user .retval ) == IS_REFERENCE ) {
367
- ZVAL_DEREF (mp .user .retval );
368
- }
369
-
370
- msgpack_unserialize_var_destroy (& var_hash , 0 );
371
-
372
- return ret == MSGPACK_UNPACK_EXTRA_BYTES || ret == MSGPACK_UNPACK_SUCCESS ;
346
+ static int APC_UNSERIALIZER_NAME (msgpack ) ( APC_UNSERIALIZER_ARGS ) /* {{{ */ {
347
+ if (buf_len > 0 && php_msgpack_unserialize (value , buf , buf_len ) == SUCCESS ) {
348
+ return 1 ;
349
+ }
350
+ return 0 ;
373
351
}
374
352
/* }}} */
375
353
#endif
0 commit comments