From: Dmitry Stogov Date: Thu, 18 Aug 2005 11:13:50 +0000 (+0000) Subject: var_export() should escape \ and ' characters. X-Git-Tag: PRE_NEW_OCI8_EXTENSION~169 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=474ff091a2fa58873b855e95b63b0382261e6de6;p=php var_export() should escape \ and ' characters. --- diff --git a/ext/standard/var.c b/ext/standard/var.c index 6e2dd3ecf5..bf9ab3562d 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -42,7 +42,7 @@ /* {{{ php_var_dump */ /* temporary, for debugging */ -static void php_var_dump_unicode(UChar *ustr, int32_t length, int verbose, char *quote TSRMLS_DC) +static void php_var_dump_unicode(UChar *ustr, int32_t length, int verbose, char *quote, int escape TSRMLS_DC) { UChar32 c; int32_t i; @@ -72,7 +72,16 @@ static void php_var_dump_unicode(UChar *ustr, int32_t length, int verbose, char } ZEND_PUTS(quote); - PHPWRITE(out, clen); + if (escape) { + char *str; + int str_len; + + str = php_addcslashes(out, clen, &str_len, 0, "'\\", 2 TSRMLS_CC); + PHPWRITE(str, str_len); + efree(str); + } else { + PHPWRITE(out, clen); + } ZEND_PUTS(quote); if (verbose) { ZEND_PUTS(" {"); @@ -129,7 +138,7 @@ static int php_array_element_dump(zval **zv, int num_args, va_list args, zend_ha php_printf("\""); } else if (hash_key->type == IS_UNICODE) { php_printf("u"); - php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, verbose, "\"" TSRMLS_CC); + php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, verbose, "\"", 0 TSRMLS_CC); } php_printf("]=>\n"); } @@ -207,7 +216,7 @@ PHPAPI void php_var_dump(zval **struc, int level, int verbose TSRMLS_DC) break; case IS_UNICODE: php_printf("%sunicode(%d) ", COMMON, u_countChar32((*struc)->value.ustr.val, (*struc)->value.ustr.len)); - php_var_dump_unicode((*struc)->value.ustr.val, (*struc)->value.ustr.len, 0, "\"" TSRMLS_CC); + php_var_dump_unicode((*struc)->value.ustr.val, (*struc)->value.ustr.len, 0, "\"", 0 TSRMLS_CC); PUTS("\n"); break; case IS_ARRAY: @@ -334,7 +343,7 @@ static int zval_array_element_dump(zval **zv, int num_args, va_list args, zend_h php_printf("\""); } else if (hash_key->type == IS_UNICODE) { php_printf("u"); - php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, 1, "\"" TSRMLS_CC); + php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, 1, "\"", 0 TSRMLS_CC); } php_printf("]=>\n"); } @@ -378,7 +387,7 @@ PHPAPI void php_debug_zval_dump(zval **struc, int level, int verbose TSRMLS_DC) break; case IS_UNICODE: php_printf("%sunicode(%d) ", COMMON, u_countChar32((*struc)->value.ustr.val, (*struc)->value.ustr.len)); - php_var_dump_unicode((*struc)->value.ustr.val, (*struc)->value.ustr.len, verbose, "\"" TSRMLS_CC); + php_var_dump_unicode((*struc)->value.ustr.val, (*struc)->value.ustr.len, verbose, "\"", 0 TSRMLS_CC); php_printf(" refcount(%u)\n", Z_REFCOUNT_PP(struc)); break; case IS_ARRAY: @@ -461,7 +470,7 @@ static int php_array_element_export(zval **zv, int num_args, va_list args, zend_ } else { /* string key */ php_printf("%*c'", level + 1, ' '); if (hash_key->type == IS_UNICODE) { - php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, 0, "" TSRMLS_CC); + php_var_dump_unicode(hash_key->u.unicode, hash_key->nKeyLength-1, 0, "", 1 TSRMLS_CC); } else { char *key; int key_len; @@ -535,10 +544,7 @@ PHPAPI void php_var_export(zval **struc, int level TSRMLS_DC) efree (tmp_str); break; case IS_UNICODE: -/* TODO - tmp_str = php_addcslashes(Z_STRVAL_PP(struc), Z_STRLEN_PP(struc), &tmp_len, 0, "'\\", 2 TSRMLS_CC); -*/ - php_var_dump_unicode(Z_USTRVAL_PP(struc), Z_USTRLEN_PP(struc), 0, "'" TSRMLS_CC); + php_var_dump_unicode(Z_USTRVAL_PP(struc), Z_USTRLEN_PP(struc), 0, "'", 1 TSRMLS_CC); break; case IS_ARRAY: myht = Z_ARRVAL_PP(struc);