]> granicus.if.org Git - php/commitdiff
Merge ../phpdbg into PHP-5.6
authorBob Weinand <bobwei9@hotmail.com>
Tue, 28 Oct 2014 21:15:05 +0000 (22:15 +0100)
committerBob Weinand <bobwei9@hotmail.com>
Tue, 28 Oct 2014 21:15:05 +0000 (22:15 +0100)
Conflicts:
sapi/phpdbg/config.m4

config.m4
config.w32
phpdbg_wait.c
phpdbg_webdata_transfer.c

index b8aa8526c56f87fa43fdd3aebae5226241754d19..9603be105cf88d95bbff9875cc127cff160a54cd 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -25,11 +25,6 @@ if test "$BUILD_PHPDBG" == "" && test "$PHP_PHPDBG" != "no"; then
     if ! test -d $abs_srcdir/ext/phpdbg_webhelper; then
       ln -s ../sapi/phpdbg $abs_srcdir/ext/phpdbg_webhelper
     fi
-    if test "$PHP_JSON" != "no"; then
-      PHP_NEW_EXTENSION(phpdbg_webhelper, phpdbg_rinit_hook.c phpdbg_webdata_transfer.c, $ext_shared)
-    else
-      AC_MSG_ERROR(Webhelper extension of phpdbg needs json enabled)
-    fi
   fi
 
   PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE"
index 6f0bd8f81136e012f1bf5b9623b926f7783761ac..651c7e6d16a7362f0fba611b52130319e28b8456 100644 (file)
@@ -1,5 +1,6 @@
 ARG_ENABLE('phpdbg', 'Build phpdbg', 'no');
 ARG_ENABLE('phpdbgs', 'Build phpdbg shared', 'no');
+ARG_ENABLE('phpdbgwebhelper', 'Build phpdbg webhelper', 'yes');
 
 PHPDBG_SOURCES='phpdbg.c phpdbg_prompt.c phpdbg_cmd.c phpdbg_info.c phpdbg_help.c phpdbg_break.c ' +
                'phpdbg_print.c phpdbg_bp.c phpdbg_opcode.c phpdbg_list.c phpdbg_utils.c ' +
@@ -14,6 +15,10 @@ if (PHP_PHPDBG == "yes") {
        ADD_FLAG("LIBS_PHPDBG", "ws2_32.lib user32.lib");
        ADD_FLAG("CFLAGS_PHPDBG", "/D YY_NO_UNISTD_H");
        ADD_FLAG("LDFLAGS_PHPDBG", "/stack:8388608");
+
+       if (PHP_PHPDBGWEBHELPER == "yes") {
+               EXTENSION('phpdbg-webhelper', 'phpdbg_rinit_hook.c phpdbg_webdata_compress.c');
+       }
 }
 
 if (PHP_PHPDBGS == "yes") {
index ea506a2d932f76172df212d7bab4bdaac5e9123e..bdce77180b49d434e41485e04f10ac89615070d8 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "phpdbg_wait.h"
 #include "phpdbg_prompt.h"
-#include "ext/json/JSON_parser.h"
+#include "ext/standard/php_var.h"
 #include "ext/standard/basic_functions.h"
 
 ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
@@ -127,16 +127,18 @@ static int phpdbg_array_intersect(phpdbg_intersect_ptr *info, zval ***ptr) {
 }
 
 void phpdbg_webdata_decompress(char *msg, int len TSRMLS_DC) {
-#ifdef HAVE_JSON
        zval *free_zv = NULL;
-       zval zv, **zvpp;
+       zval zv, *zvp = &zv, **zvpp;
        HashTable *ht;
-       php_json_decode(&zv, msg, len, 1, 1000 /* enough */ TSRMLS_CC);
+       php_unserialize_data_t var_hash;
 
-       if (JSON_G(error_code) != PHP_JSON_ERROR_NONE) {
-               phpdbg_error("wait", "type=\"invaliddata\" import=\"fail\"", "Malformed JSON was sent to this socket, arborting");
+       PHP_VAR_UNSERIALIZE_INIT(var_hash);
+       if (!php_var_unserialize(&zvp, (const unsigned char **) &msg, (unsigned char *) msg + len, &var_hash TSRMLS_CC)) {
+               PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
+               phpdbg_error("wait", "type=\"invaliddata\" import=\"fail\"", "Malformed serialized was sent to this socket, arborting");
                return;
        }
+       PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
 
        ht = Z_ARRVAL(zv);
 
@@ -358,7 +360,6 @@ void phpdbg_webdata_decompress(char *msg, int len TSRMLS_DC) {
 
        /* Reapply raw input */
        /* ??? */
-#endif
 }
 
 PHPDBG_COMMAND(wait) /* {{{ */
index e7438ea01abf495e075a908098feb19730fd98d3..1cbc4107b5cb1158047a60bae5efc2082797890c 100644 (file)
 */
 
 #include "phpdbg_webdata_transfer.h"
-#include "ext/json/php_json.h"
+#include "ext/standard/php_var.h"
 
 PHPDBG_API void phpdbg_webdata_compress(char **msg, int *len TSRMLS_DC) {
-#ifdef HAVE_JSON
-       smart_str buf = {0};
        zval array;
        HashTable *ht;
        /* I really need to change that to an array of zvals... */
@@ -177,9 +175,17 @@ PHPDBG_API void phpdbg_webdata_compress(char **msg, int *len TSRMLS_DC) {
        }
 
        /* encode data */
-       php_json_encode(&buf, &array, 0 TSRMLS_CC);
-       *msg = buf.c;
-       *len = buf.len;
+       {
+               php_serialize_data_t var_hash;
+               smart_str buf = {0};
+               zval *arrayptr = &array;
+
+               PHP_VAR_SERIALIZE_INIT(var_hash);
+               php_var_serialize(&buf, &arrayptr, &var_hash TSRMLS_CC);
+               PHP_VAR_SERIALIZE_DESTROY(var_hash);
+               *msg = buf.c;
+               *len = buf.len;
+       }
+
        zval_dtor(&array);
-#endif
 }