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