diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-04-15 21:56:30 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-15 21:56:30 +0400 |
commit | f9b26bc39a9ea9b1380628eeb0e6dad3c93cfcb0 (patch) | |
tree | da606ba7a4dd4db0119c0f25af9c201eff56eb21 /ext | |
parent | 61e9b0d265364f9b99a1fdc69a9cafd4d3fc4721 (diff) | |
download | php-git-f9b26bc39a9ea9b1380628eeb0e6dad3c93cfcb0.tar.gz |
Cleanup (2-nd round)
Diffstat (limited to 'ext')
-rw-r--r-- | ext/date/php_date.c | 10 | ||||
-rw-r--r-- | ext/mbstring/mbstring.c | 44 | ||||
-rw-r--r-- | ext/mysql/php_mysql.c | 5 | ||||
-rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 1 | ||||
-rw-r--r-- | ext/opcache/Optimizer/zend_optimizer_internal.h | 2 | ||||
-rw-r--r-- | ext/opcache/ZendAccelerator.c | 13 | ||||
-rw-r--r-- | ext/opcache/zend_accelerator_util_funcs.c | 9 | ||||
-rw-r--r-- | ext/opcache/zend_persist.c | 9 | ||||
-rw-r--r-- | ext/pcre/php_pcre.c | 1 | ||||
-rw-r--r-- | ext/reflection/php_reflection.c | 11 | ||||
-rw-r--r-- | ext/standard/basic_functions.c | 2 | ||||
-rw-r--r-- | ext/standard/browscap.c | 7 | ||||
-rw-r--r-- | ext/standard/file.c | 6 | ||||
-rw-r--r-- | ext/standard/fsock.c | 2 | ||||
-rw-r--r-- | ext/standard/html.c | 6 | ||||
-rw-r--r-- | ext/standard/iptc.c | 3 | ||||
-rw-r--r-- | ext/standard/quot_print.c | 3 | ||||
-rw-r--r-- | ext/standard/scanf.c | 2 | ||||
-rw-r--r-- | ext/standard/streamsfuncs.c | 18 | ||||
-rw-r--r-- | ext/standard/string.c | 30 | ||||
-rw-r--r-- | ext/standard/type.c | 2 | ||||
-rw-r--r-- | ext/standard/uniqid.c | 2 | ||||
-rw-r--r-- | ext/standard/var.c | 4 |
23 files changed, 78 insertions, 114 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 6bc2db7a71..8009897b9a 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2212,7 +2212,7 @@ static HashTable *date_object_get_properties(zval *object TSRMLS_DC) /* {{{ */ abs(utc_offset / 60), abs((utc_offset % 60))); -//??? ZVAL_STRING(zv, tmpstr, 0); + // TODO: avoid reallocation ??? ZVAL_STRING(&zv, tmpstr); efree(tmpstr); } @@ -2306,7 +2306,7 @@ static HashTable *date_object_get_properties_timezone(zval *object TSRMLS_DC) /* abs(tzobj->tzi.utc_offset / 60), abs((tzobj->tzi.utc_offset % 60))); -//??? ZVAL_STRING(zv, tmpstr, 0); + // TODO: avoid reallocation ??? ZVAL_STRING(&zv, tmpstr); efree(tmpstr); } @@ -3744,7 +3744,7 @@ PHP_FUNCTION(timezone_name_get) abs(utc_offset / 60), abs((utc_offset % 60))); -//??? RETURN_STRING(tmpstr, 0); + // TODO: avoid reallocation ??? RETVAL_STRING(tmpstr); efree(tmpstr); return; @@ -4003,8 +4003,6 @@ zval *date_interval_read_property(zval *object, zval *member, int type, const ze return retval; } while(0); -//??? ALLOC_INIT_ZVAL(retval); -//??? Z_SET_REFCOUNT_P(retval, 0); retval = rv; if (value != -99999) { @@ -4622,7 +4620,7 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, int calc_su switch (retformat) { case SUNFUNCS_RET_STRING: spprintf(&retstr, 0, "%02d:%02d", (int) N, (int) (60 * (N - (int) N))); -//??? RETURN_STRINGL(retstr, 5, 0); + // TODO: avoid reallocation ??? RETVAL_STRINGL(retstr, 5); efree(retstr); return; diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index b7f97bb953..50827b26f3 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2172,7 +2172,7 @@ PHP_FUNCTION(mb_output_handler) } /* get the converter output, and return it */ mbfl_buffer_converter_result(MBSTRG(outconv), &result); - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)result.val, result.len); /* the string is already strdup()'ed */ efree(result.val); @@ -2476,7 +2476,7 @@ PHP_FUNCTION(mb_strstr) if (part) { ret = mbfl_substr(&haystack, &result, 0, n); if (ret != NULL) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2486,7 +2486,7 @@ PHP_FUNCTION(mb_strstr) len = (mblen - n); ret = mbfl_substr(&haystack, &result, n, len); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2540,7 +2540,7 @@ PHP_FUNCTION(mb_strrchr) if (part) { ret = mbfl_substr(&haystack, &result, 0, n); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2550,7 +2550,7 @@ PHP_FUNCTION(mb_strrchr) len = (mblen - n); ret = mbfl_substr(&haystack, &result, n, len); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2606,7 +2606,7 @@ PHP_FUNCTION(mb_stristr) if (part) { ret = mbfl_substr(&haystack, &result, 0, n); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2616,7 +2616,7 @@ PHP_FUNCTION(mb_stristr) len = (mblen - n); ret = mbfl_substr(&haystack, &result, n, len); if (ret != NULL) { - //???? + // TODO: avoid reallocaton ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2663,7 +2663,7 @@ PHP_FUNCTION(mb_strrichr) if (part) { ret = mbfl_substr(&haystack, &result, 0, n); if (ret != NULL) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2673,7 +2673,7 @@ PHP_FUNCTION(mb_strrichr) len = (mblen - n); ret = mbfl_substr(&haystack, &result, n, len); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { @@ -2798,7 +2798,7 @@ PHP_FUNCTION(mb_substr) RETURN_FALSE; } - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } @@ -2867,7 +2867,7 @@ PHP_FUNCTION(mb_strcut) RETURN_FALSE; } - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } @@ -2961,7 +2961,7 @@ PHP_FUNCTION(mb_strimwidth) if (ret == NULL) { RETURN_FALSE; } - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } @@ -3117,8 +3117,8 @@ PHP_FUNCTION(mb_convert_encoding) /* new encoding */ ret = php_mb_convert_encoding(arg_str, str_len, arg_new, _from_encodings, &size TSRMLS_CC); if (ret != NULL) { + // TODO: avoid reallocation ??? RETVAL_STRINGL(ret, size); /* the string is already strdup()'ed */ - //??? efree(ret); } else { RETVAL_FALSE; @@ -3150,8 +3150,8 @@ PHP_FUNCTION(mb_convert_case) newstr = php_unicode_convert_case(case_mode, str, (size_t) str_len, &ret_len, from_encoding TSRMLS_CC); if (newstr) { + // TODO: avoid reallocation ??? RETVAL_STRINGL(newstr, ret_len); - //??? efree(newstr); } } @@ -3175,7 +3175,7 @@ PHP_FUNCTION(mb_strtoupper) newstr = php_unicode_convert_case(PHP_UNICODE_CASE_UPPER, str, (size_t) str_len, &ret_len, from_encoding TSRMLS_CC); if (newstr) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL(newstr, ret_len); efree(newstr); return; @@ -3202,7 +3202,7 @@ PHP_FUNCTION(mb_strtolower) newstr = php_unicode_convert_case(PHP_UNICODE_CASE_LOWER, str, (size_t) str_len, &ret_len, from_encoding TSRMLS_CC); if (newstr) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL(newstr, ret_len); efree(newstr); return; @@ -3383,7 +3383,7 @@ PHP_FUNCTION(mb_encode_mimeheader) mbfl_string_init(&result); ret = mbfl_mime_header_encode(&string, &result, charset, transenc, linefeed, indent); if (ret != NULL) { - //????? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } else { @@ -3409,7 +3409,7 @@ PHP_FUNCTION(mb_decode_mimeheader) mbfl_string_init(&result); ret = mbfl_mime_header_decode(&string, &result, MBSTRG(current_internal_encoding)->no_encoding); if (ret != NULL) { - //???? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } else { @@ -3514,7 +3514,7 @@ PHP_FUNCTION(mb_convert_kana) ret = mbfl_ja_jp_hantozen(&string, &result, opt); if (ret != NULL) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } else { @@ -3716,7 +3716,7 @@ detect_end: ret = mbfl_buffer_converter_feed_result(convd, &string, &result); if (ret != NULL) { zval_ptr_dtor(hash_entry_ptr); - //??? + // TODO: avoid reallocation ??? ZVAL_STRINGL(hash_entry_ptr, (char *)ret->val, ret->len); efree(ret->val); } @@ -3729,7 +3729,7 @@ detect_end: ret = mbfl_buffer_converter_feed_result(convd, &string, &result); if (ret != NULL) { zval_ptr_dtor(var); - //???? + // TODO: avoid reallocation ??? ZVAL_STRINGL(var, (char *)ret->val, ret->len); efree(ret->val); } @@ -3820,7 +3820,7 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type) ret = mbfl_html_numeric_entity(&string, &result, convmap, mapsize, type); if (ret != NULL) { - //??? + // TODO: avoid reallocation ??? RETVAL_STRINGL((char *)ret->val, ret->len); efree(ret->val); } else { diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index b6d43687e0..1731c8a538 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -1335,8 +1335,9 @@ PHP_FUNCTION(mysql_stat) RETURN_STRING(stat); #else if (mysqlnd_stat(mysql->conn, &stat, &stat_len) == PASS) { - //???? memleak - RETURN_STRINGL(stat, stat_len); + // TODO: avoid reallocation ??? + RETVAL_STRINGL(stat, stat_len); + efree(stat); #endif } else { RETURN_FALSE; diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index deaf09547d..1905e66136 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -281,7 +281,6 @@ static void optimizer_compact_literals(zend_op_array *op_array TSRMLS_DC) /* Merge equal constants */ j = 0; cache_slots = 0; zend_hash_init(&hash, 16, NULL, NULL, 0); -//??? hash.flags |= HASH_FLAG_BIG_DATA; map = (int*)ecalloc(op_array->last_literal, sizeof(int)); for (i = 0; i < op_array->last_literal; i++) { if (!info[i].flags) { diff --git a/ext/opcache/Optimizer/zend_optimizer_internal.h b/ext/opcache/Optimizer/zend_optimizer_internal.h index c0e298b94f..049036c1f4 100644 --- a/ext/opcache/Optimizer/zend_optimizer_internal.h +++ b/ext/opcache/Optimizer/zend_optimizer_internal.h @@ -24,7 +24,7 @@ #include "ZendAccelerator.h" -#if 1 //???ZEND_EXTENSION_API_NO > PHP_5_6_X_API_NO +#if 1 // TODO: remove support for old PHP versions ??? # define VAR_NUM(v) EX_VAR_TO_NUM(v) # define NUM_VAR(v) ((zend_uint)(zend_uintptr_t)EX_VAR_NUM_2(0, v)) #elif ZEND_EXTENSION_API_NO > PHP_5_4_X_API_NO diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index cdf48f2bb2..01dfd5c2a9 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -329,9 +329,7 @@ zend_string *accel_new_interned_string(zend_string *str TSRMLS_DC) p = ZCSG(interned_strings).arData + idx; if ((p->h == h) && (p->key->len == str->len)) { if (!memcmp(p->key->val, str->val, str->len)) { -//??? if (free_src) { - STR_RELEASE(str); -//??? } + STR_RELEASE(str); return p->key; } } @@ -366,11 +364,7 @@ zend_string *accel_new_interned_string(zend_string *str TSRMLS_DC) ZVAL_STR(&p->val, p->key); Z_NEXT(p->val) = ZCSG(interned_strings).arHash[nIndex]; ZCSG(interned_strings).arHash[nIndex] = idx; - -//??? if (free_src) { - STR_RELEASE(str); -//??? } - + STR_RELEASE(str); return p->key; #else return str; @@ -2231,9 +2225,6 @@ static void accel_fast_zval_dtor(zval *zvalue) { TSRMLS_FETCH(); -#if ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO -//??? GC_REMOVE_FROM_BUFFER(Z_OBJ_P(zvalue)); -#endif OBJ_RELEASE(Z_OBJ_P(zvalue)); } break; diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 61d662a4f8..0d1a1907cd 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -354,9 +354,6 @@ static void zend_hash_clone_zval(HashTable *ht, HashTable *source, int bind) ht->nNumOfElements = source->nNumOfElements; ht->nNextFreeElement = source->nNextFreeElement; ht->pDestructor = ZVAL_PTR_DTOR; -#if ZEND_DEBUG -//??? ht->inconsistent = 0; -#endif ht->flags = HASH_FLAG_APPLY_PROTECTION; ht->arData = NULL; ht->arHash = NULL; @@ -430,9 +427,6 @@ static void zend_hash_clone_methods(HashTable *ht, HashTable *source, zend_class ht->nNumOfElements = source->nNumOfElements; ht->nNextFreeElement = source->nNextFreeElement; ht->pDestructor = ZEND_FUNCTION_DTOR; -#if ZEND_DEBUG -//??? ht->inconsistent = 0; -#endif ht->flags = HASH_FLAG_APPLY_PROTECTION; ht->nInternalPointer = source->nNumOfElements ? 0 : INVALID_IDX; ht->nApplyCount = 0; @@ -531,9 +525,6 @@ static void zend_hash_clone_prop_info(HashTable *ht, HashTable *source, zend_cla ht->nNumOfElements = source->nNumOfElements; ht->nNextFreeElement = source->nNextFreeElement; ht->pDestructor = zend_destroy_property_info; -#if ZEND_DEBUG -//??? ht->inconsistent = 0; -#endif ht->flags = HASH_FLAG_APPLY_PROTECTION; ht->nInternalPointer = source->nNumOfElements ? 0 : INVALID_IDX; ht->nApplyCount = 0; diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 78cb5abc8a..da9ec7dd87 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -170,12 +170,6 @@ static void zend_persist_zval(zval *z TSRMLS_DC) } } -static void zend_protect_zval(zval *z TSRMLS_DC) -{ -//??? PZ_SET_ISREF_P(z); -//??? PZ_SET_REFCOUNT_P(z, 2); -} - static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_script* main_persistent_script TSRMLS_DC) { zend_op *persist_ptr; @@ -233,7 +227,6 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc op_array->literals = p; while (p < end) { zend_persist_zval(&p->constant TSRMLS_CC); - zend_protect_zval(&p->constant TSRMLS_CC); p++; } efree(orig_literals); @@ -255,7 +248,6 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc opline->op1.zv = (zval*)((char*)opline->op1.zv + ((char*)op_array->literals - (char*)orig_literals)); #else zend_persist_zval(&opline->op1.u.constant TSRMLS_CC); - zend_protect_zval(&opline->op1.u.constant TSRMLS_CC); #endif } if (ZEND_OP2_TYPE(opline) == IS_CONST) { @@ -263,7 +255,6 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc opline->op2.zv = (zval*)((char*)opline->op2.zv + ((char*)op_array->literals - (char*)orig_literals)); #else zend_persist_zval(&opline->op2.u.constant TSRMLS_CC); - zend_protect_zval(&opline->op2.u.constant TSRMLS_CC); #endif } diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index bd76b556af..54f7667d0f 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -1243,7 +1243,6 @@ static zend_string *php_replace_in_subject(zval *regex, zval *replace, zval *sub } /* FIXME: This might need to be changed to STR_EMPTY_ALLOC(). Check if this zval could be dtor()'ed somehow */ -//??? ZVAL_STRINGL(&empty_replace, "", 0, 0); ZVAL_EMPTY_STRING(&empty_replace); /* If regex is an array */ diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 6dc4ef2edf..0b8027dd85 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -732,7 +732,6 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg int use_copy; string_write(str, " = ", sizeof(" = ")-1); ZVAL_DUP(&zv, precv->op2.zv); -//??? INIT_PZVAL(zv); zval_update_constant_ex(&zv, (void*)1, fptr->common.scope TSRMLS_CC); if (Z_TYPE(zv) == IS_BOOL) { if (Z_LVAL(zv)) { @@ -1378,8 +1377,6 @@ static void _reflection_export(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *c ZVAL_COPY_VALUE(¶ms[1], argument2_ptr); } -//??? INIT_PZVAL(&output); - /* Create object */ if (object_and_properties_init(&reflector, ce_ptr, NULL) == FAILURE) { _DO_THROW("Could not create reflector"); @@ -2585,11 +2582,11 @@ ZEND_METHOD(reflection_parameter, getDefaultValue) } ZVAL_COPY_VALUE(return_value, precv->op2.zv); -//??? INIT_PZVAL(return_value); - if (!Z_CONSTANT_P(return_value)) { + if (Z_CONSTANT_P(return_value)) { + zval_update_constant_ex(return_value, (void*)0, param->fptr->common.scope TSRMLS_CC); + } else { zval_copy_ctor(return_value); } - zval_update_constant_ex(return_value, (void*)0, param->fptr->common.scope TSRMLS_CC); } /* }}} */ @@ -3377,7 +3374,6 @@ static void add_class_vars(zend_class_entry *ce, int statics, zval *return_value /* copy: enforce read only access */ ZVAL_DUP(&prop_copy, prop); -//??? INIT_PZVAL(prop_copy); /* this is necessary to make it able to work with default array * properties, returned to user */ @@ -4956,7 +4952,6 @@ ZEND_METHOD(reflection_property, getValue) /* Bails out */ } ZVAL_DUP(return_value, &CE_STATIC_MEMBERS(intern->ce)[ref->prop.offset]); -//??? INIT_PZVAL(return_value); } else { const char *class_name, *prop_name; diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 6632e99328..0dc9874f4b 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -4030,7 +4030,7 @@ PHP_FUNCTION(getenv) /* SAPI method returns an emalloc()'d string */ ptr = sapi_getenv(str, str_len TSRMLS_CC); if (ptr) { -//??? RETURN_STRING(ptr, 0); + // TODO: avoid realocation ??? RETVAL_STRING(ptr); efree(ptr); return; diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c index 3b7b994ab0..08a01d5dff 100644 --- a/ext/standard/browscap.c +++ b/ext/standard/browscap.c @@ -84,8 +84,7 @@ static void convert_browscap_pattern(zval *pattern, int persistent) /* {{{ */ char *lc_pattern; // TODO: overflow check??? -//??? t = (char *) safe_pemalloc(Z_STRLEN_P(pattern), 2, 5, persistent); - res = STR_ALLOC(Z_STRLEN_P(pattern) * 2 + 5, persistent); + res = STR_SAFE_ALLOC(Z_STRLEN_P(pattern), 2, 4, persistent); t = res->val; lc_pattern = zend_str_tolower_dup(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern)); @@ -436,8 +435,8 @@ static int browser_reg_compare(zval *browser TSRMLS_DC, int num_args, va_list ar static void browscap_zval_copy_ctor(zval *p) /* {{{ */ { zval_copy_ctor(p); -//??? INIT_PZVAL(p); -} /* }}} */ +} +/* }}} */ /* {{{ proto mixed get_browser([string browser_name [, bool return_array]]) Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array. */ diff --git a/ext/standard/file.c b/ext/standard/file.c index b802e2c4e7..536cdfb269 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -822,10 +822,8 @@ PHP_FUNCTION(tempnam) if ((fd = php_open_temporary_fd_ex(dir, p->val, &opened_path, 1 TSRMLS_CC)) >= 0) { close(fd); -//??? RETVAL_STRING(opened_path, 0); + // TODO: avoid reallocation ??? RETVAL_STRING(opened_path); - //??? temporary fixed the memory leak, I've tried to make opened_path a zend_string - //but too too many places need to be changed.... let's keep it simple for now efree(opened_path); } STR_RELEASE(p); @@ -1116,7 +1114,7 @@ PHPAPI PHP_FUNCTION(fgetss) retval_len = php_strip_tags(retval, actual_len, &stream->fgetss_state, allowed_tags, allowed_tags_len); -//??? RETURN_STRINGL(retval, retval_len, 0); + // TODO: avoid reallocation ??? RETVAL_STRINGL(retval, retval_len); efree(retval); } diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index 0774893e85..8e164bab38 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -100,7 +100,7 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) if (zerrstr && errstr) { /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); -//??? ZVAL_STRING(zerrstr, errstr, 0); + // TODO: avoid reallocation ??? ZVAL_STRING(zerrstr, errstr); efree(errstr); } else if (!zerrstr && errstr) { diff --git a/ext/standard/html.c b/ext/standard/html.c index cc772859a5..69f2400c53 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1276,8 +1276,7 @@ PHPAPI zend_string *php_escape_html_entities_ex(unsigned char *old, size_t oldle /* guarantee we have at least 40 bytes to write. * In HTML5, entities may take up to 33 bytes */ if (len > maxlen - 40) { /* maxlen can never be smaller than 128 */ -//??? replaced = safe_erealloc(replaced, maxlen , 1, 128 + 1); - replaced = STR_REALLOC(replaced, maxlen + 128, 0); + replaced = STR_SAFE_REALLOC(replaced, maxlen, 1, 128, 0); maxlen += 128; } @@ -1409,8 +1408,7 @@ encode_amp: /* at this point maxlen - len >= 40 */ if (maxlen - len < ent_len + 2 /* & and ; */) { /* ent_len < oldlen, which is certainly <= SIZE_MAX/2 */ -//??? replaced = safe_erealloc(replaced, maxlen, 1, ent_len + 128 + 1); - replaced = STR_REALLOC(replaced, maxlen + ent_len + 128, 0); + replaced = STR_SAFE_REALLOC(replaced, maxlen, 1, ent_len + 128, 0); maxlen += ent_len + 128; } replaced->val[len++] = '&'; diff --git a/ext/standard/iptc.c b/ext/standard/iptc.c index fa17c95f3c..2df16daaac 100644 --- a/ext/standard/iptc.c +++ b/ext/standard/iptc.c @@ -285,8 +285,9 @@ PHP_FUNCTION(iptcembed) fclose(fp); if (spool < 2) { -//??? RETVAL_STRINGL(spoolbuf, poi - spoolbuf, 0); + // TODO: avoid reallocation ??? RETVAL_STRINGL(spoolbuf, poi - spoolbuf); + efree(spoolbuf); } else { RETURN_TRUE; } diff --git a/ext/standard/quot_print.c b/ext/standard/quot_print.c index 4e6b1f1e2e..aa3d256c3a 100644 --- a/ext/standard/quot_print.c +++ b/ext/standard/quot_print.c @@ -152,8 +152,7 @@ PHPAPI zend_string *php_quot_print_encode(const unsigned char *str, size_t lengt char *hex = "0123456789ABCDEF"; zend_string *ret; -//??? ret = safe_emalloc(3, length + (((3 * length)/(PHP_QPRINT_MAXL-9)) + 1), 1); - ret = STR_ALLOC(3 * (length + (((3 * length)/(PHP_QPRINT_MAXL-9)) + 1)), 0); + ret = STR_SAFE_ALLOC(3, (length + (((3 * length)/(PHP_QPRINT_MAXL-9)) + 1)), 0, 0); d = (unsigned char*)ret->val; while (length--) { diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index 77f781c49b..3eb58e1837 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -866,7 +866,7 @@ literal: current = &args[objIndex++]; zval_dtor(Z_REFVAL_P(current)); ZVAL_STRINGL(Z_REFVAL_P(current), string, end-string); -// Z_SET_REFCOUNT_P(current, refcount); +//??? Z_SET_REFCOUNT_P(current, refcount); //??? Z_SET_ISREF_PP(current); } else { add_index_stringl(return_value, objIndex++, string, end-string); diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 360c436be7..e668b973b4 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -156,7 +156,7 @@ PHP_FUNCTION(stream_socket_client) if (zerrstr && errstr) { /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); -//??? ZVAL_STRING(zerrstr, errstr, 0); + // TODO: avoid reallocation ??? ZVAL_STRING(zerrstr, errstr); efree(errstr); } else if (errstr) { @@ -224,8 +224,9 @@ PHP_FUNCTION(stream_socket_server) if (zerrstr && errstr) { /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); -//??? ZVAL_STRING(zerrstr, errstr, 0); + // TODO: avoid reallocation ??? ZVAL_STRING(zerrstr, errstr); + efree(errstr); } else if (errstr) { efree(errstr); } @@ -283,8 +284,9 @@ PHP_FUNCTION(stream_socket_accept) TSRMLS_CC) && clistream) { if (peername) { -//??? ZVAL_STRINGL(zpeername, peername, peername_len, 0); + // TODO: avoid reallocation ??? ZVAL_STRINGL(zpeername, peername, peername_len); + efree(peername); } php_stream_to_zval(clistream, return_value); } else { @@ -322,8 +324,9 @@ PHP_FUNCTION(stream_socket_get_name) RETURN_FALSE; } -//??? RETURN_STRINGL(name, name_len, 0); - RETURN_STRINGL(name, name_len); + // TODO: avoid reallocation ??? + RETVAL_STRINGL(name, name_len); + efree(name); } /* }}} */ @@ -394,8 +397,9 @@ PHP_FUNCTION(stream_socket_recvfrom) if (recvd >= 0) { if (zremote) { -//??? ZVAL_STRINGL(zremote, remote_addr, remote_addr_len, 0); + // TODO: avoid reallocation ??? ZVAL_STRINGL(zremote, remote_addr, remote_addr_len); + efree(remote_addr); } read_buf->val[recvd] = '\0'; read_buf->len = recvd; @@ -1537,7 +1541,7 @@ PHP_FUNCTION(stream_resolve_include_path) resolved_path = zend_resolve_path(filename, filename_len TSRMLS_CC); if (resolved_path) { -//??? RETURN_STRING(resolved_path, 0); + // TODO: avoid reallocation ??? RETVAL_STRING(resolved_path); efree(resolved_path); return; diff --git a/ext/standard/string.c b/ext/standard/string.c index 19a3fda93b..290fa21879 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -132,8 +132,7 @@ static zend_string *php_bin2hex(const unsigned char *old, const size_t oldlen) zend_string *result; size_t i, j; -//??? result = (unsigned char *) safe_emalloc(oldlen, 2 * sizeof(char), 1); - result = STR_ALLOC(oldlen * 2 * sizeof(char), 0); + result = STR_SAFE_ALLOC(oldlen, 2 * sizeof(char), 0, 0); for (i = j = 0; i < oldlen; i++) { result->val[j++] = hexconvtab[old[i] >> 4]; @@ -277,8 +276,9 @@ PHP_FUNCTION(hex2bin) RETURN_FALSE; } -//??? RETURN_STRINGL(result, newlen, 0); - RETURN_STRINGL(result, newlen); + // TODO: avoid reallocation ??? + RETVAL_STRINGL(result, newlen); + efree(result); } /* }}} */ @@ -3566,8 +3566,12 @@ PHPAPI int php_char_to_str_ex(char *str, uint len, char from, char *to, int to_l return 0; } - ZVAL_NEW_STR(result, STR_ALLOC(len + (char_count * (to_len - 1)), 0)); - target = Z_STRVAL_P(result); //??? = target = safe_emalloc(char_count, to_len, len + 1); + if (to_len > 0) { + ZVAL_NEW_STR(result, STR_SAFE_ALLOC(char_count, to_len - 1, len, 0)); + } else { + ZVAL_NEW_STR(result, STR_ALLOC(len - char_count, 0)); + } + target = Z_STRVAL_P(result); if (case_sensitivity) { char *p = str, *e = p + len, *s = str; @@ -4265,13 +4269,12 @@ PHP_FUNCTION(nl2br) Strips HTML and PHP tags from a string */ PHP_FUNCTION(strip_tags) { - char *buf; + zend_string *buf; char *str; zval *allow=NULL; char *allowed_tags=NULL; int allowed_tags_len=0; int str_len; - size_t retval_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &str, &str_len, &allow) == FAILURE) { return; @@ -4284,11 +4287,9 @@ PHP_FUNCTION(strip_tags) allowed_tags_len = Z_STRLEN_P(allow); } - buf = estrndup(str, str_len); - retval_len = php_strip_tags_ex(buf, str_len, NULL, allowed_tags, allowed_tags_len, 0); -//??? RETURN_STRINGL(buf, retval_len, 0); - RETVAL_STRINGL(buf, retval_len); - efree(buf); + buf = STR_INIT(str, str_len, 0); + buf->len = php_strip_tags_ex(buf->val, str_len, NULL, allowed_tags, allowed_tags_len, 0); + RETURN_STR(buf); } /* }}} */ @@ -4852,9 +4853,8 @@ PHP_FUNCTION(str_repeat) RETURN_EMPTY_STRING(); /* Initialize the result string */ + result = STR_SAFE_ALLOC(input_len, mult, 0, 0); result_len = input_len * mult; -//??? result = (char *)safe_emalloc(input_len, mult, 1); - result = STR_ALLOC(result_len, 0); /* Heavy optimization for situations where input string is 1 byte long */ if (input_len == 1) { diff --git a/ext/standard/type.c b/ext/standard/type.c index 69e3305ea9..3feac632d8 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -392,7 +392,7 @@ PHP_FUNCTION(is_callable) } retval = zend_is_callable_ex(var, NULL, check_flags, &name, NULL, &error TSRMLS_CC); zval_dtor(callable_name); - //??? is it necessary to be consistent with old PHP + //??? is it necessary to be consistent with old PHP ("\0" support) name->len = strlen(name->val); ZVAL_STR(callable_name, name); } else { diff --git a/ext/standard/uniqid.c b/ext/standard/uniqid.c index ecaf6c0f5f..610fb2809c 100644 --- a/ext/standard/uniqid.c +++ b/ext/standard/uniqid.c @@ -81,7 +81,7 @@ PHP_FUNCTION(uniqid) spprintf(&uniqid, 0, "%s%08x%05x", prefix, sec, usec); } -//??? RETURN_STRING(uniqid, 0); + // TODO: avoid reallocation ??? RETVAL_STRING(uniqid); efree(uniqid); } diff --git a/ext/standard/var.c b/ext/standard/var.c index 4aedbc83fe..3f669dbda1 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -193,7 +193,7 @@ again: break; } case IS_REFERENCE: -//??? hide references with refcount==1 (for compatibility) + //??? hide references with refcount==1 (for compatibility) if (Z_REFCOUNT_P(struc) > 1) { is_ref = 1; } @@ -359,7 +359,7 @@ head_done: break; } case IS_REFERENCE: -//??? hide references with refcount==1 (for compatibility) + //??? hide references with refcount==1 (for compatibility) if (Z_REFCOUNT_P(struc) > 1) { is_ref = 1; } |