iliaa Sat Jan 18 15:09:32 2003 EDT Modified files: /php4/ext/mbstring php_mbregex.c mbstring.c Log: Removed pointless memory allocation checks.
Index: php4/ext/mbstring/php_mbregex.c diff -u php4/ext/mbstring/php_mbregex.c:1.26 php4/ext/mbstring/php_mbregex.c:1.27 --- php4/ext/mbstring/php_mbregex.c:1.26 Tue Dec 31 11:06:53 2002 +++ php4/ext/mbstring/php_mbregex.c Sat Jan 18 15:09:29 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mbregex.c,v 1.26 2002/12/31 16:06:53 sebastian Exp $ */ +/* $Id: php_mbregex.c,v 1.27 2003/01/18 20:09:29 iliaa Exp $ */ #ifdef HAVE_CONFIG_H @@ -238,20 +238,15 @@ rc->options != options || rc->mbctype != mbctype) { memset(pre, 0, sizeof(*pre)); pre->fastmap = (char*)emalloc((1 << MBRE_BYTEWIDTH)*sizeof(char)); - if (pre->fastmap) { - pre->options = options; - pre->mbctype = mbctype; - err_str = mbre_compile_pattern(pattern, patlen, pre); - if (!err_str) { - zend_hash_update(&MBSTRG(ht_rc), (char *) pattern, patlen+1, (void *) pre, sizeof(*pre), NULL); - } else { - efree(pre->fastmap); - pre->fastmap = (char*)0; - php_error_docref(NULL TSRMLS_CC, E_WARNING, "mbregex compile err: %s", err_str); - res = 1; - } + pre->options = options; + pre->mbctype = mbctype; + err_str = mbre_compile_pattern(pattern, patlen, pre); + if (!err_str) { + zend_hash_update(&MBSTRG(ht_rc), (char *) pattern, patlen+1, +(void *) pre, sizeof(*pre), NULL); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate memory in mbregex_compile_pattern"); + efree(pre->fastmap); + pre->fastmap = (char*)0; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "mbregex compile +err: %s", err_str); res = 1; } } else { @@ -698,10 +693,6 @@ if (count == 0) count = 1; - if (array_init(return_value) == FAILURE) { - RETURN_FALSE; - } - /* create regex pattern buffer */ err = php_mbregex_compile_pattern( &re, @@ -712,6 +703,8 @@ RETURN_FALSE; } + array_init(return_value); + pos = 0; err = 0; /* churn through str, generating array entries as we go */ @@ -895,29 +888,23 @@ } switch (mode) { case 1: - if (array_init(return_value) != FAILURE) { - beg = MBSTRG(search_regs)->beg[0]; - end = MBSTRG(search_regs)->end[0]; - add_next_index_long(return_value, beg); - add_next_index_long(return_value, end - beg); - } else { - RETVAL_FALSE; - } + array_init(return_value); + beg = MBSTRG(search_regs)->beg[0]; + end = MBSTRG(search_regs)->end[0]; + add_next_index_long(return_value, beg); + add_next_index_long(return_value, end - beg); break; case 2: - if (array_init(return_value) != FAILURE) { - n = MBSTRG(search_regs)->num_regs; - for (i = 0; i < n; i++) { - beg = MBSTRG(search_regs)->beg[i]; - end = MBSTRG(search_regs)->end[i]; - if (beg >= 0 && beg <= end && end <= len) { - add_index_stringl(return_value, i, (char *)&str[beg], end - beg, 1); - } else { - add_index_bool(return_value, i, 0); - } + array_init(return_value); + n = MBSTRG(search_regs)->num_regs; + for (i = 0; i < n; i++) { + beg = MBSTRG(search_regs)->beg[i]; + end = MBSTRG(search_regs)->end[i]; + if (beg >= 0 && beg <= end && end <= len) { + add_index_stringl(return_value, i, (char +*)&str[beg], end - beg, 1); + } else { + add_index_bool(return_value, i, 0); } - } else { - RETVAL_FALSE; } break; default: Index: php4/ext/mbstring/mbstring.c diff -u php4/ext/mbstring/mbstring.c:1.153 php4/ext/mbstring/mbstring.c:1.154 --- php4/ext/mbstring/mbstring.c:1.153 Tue Dec 31 11:06:52 2002 +++ php4/ext/mbstring/mbstring.c Sat Jan 18 15:09:29 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.153 2002/12/31 16:06:52 sebastian Exp $ */ +/* $Id: mbstring.c,v 1.154 2003/01/18 20:09:29 iliaa Exp $ */ /* * PHP4 Multibyte String module "mbstring" @@ -820,13 +820,11 @@ n = php_mb_default_identify_list_size; } entry = (int *)emalloc(n*sizeof(int)); - if (entry != NULL) { - MBSTRG(current_detect_order_list) = entry; - MBSTRG(current_detect_order_list_size) = n; - while (n > 0) { - *entry++ = *list++; - n--; - } + MBSTRG(current_detect_order_list) = entry; + MBSTRG(current_detect_order_list_size) = n; + while (n > 0) { + *entry++ = *list++; + n--; } /* override original function. */ @@ -1031,9 +1029,7 @@ break; case 'I': case 'i': - if (array_init(return_value) == FAILURE) { - RETURN_FALSE; - } + array_init(return_value); entry = MBSTRG(http_input_list); n = MBSTRG(http_input_list_size); while (n > 0) { @@ -1133,9 +1129,7 @@ char *name; if (ZEND_NUM_ARGS() == 0) { - if (array_init(return_value) == FAILURE) { - RETURN_FALSE; - } + array_init(return_value); entry = MBSTRG(current_detect_order_list); n = MBSTRG(current_detect_order_list_size); while (n > 0) { @@ -2463,9 +2457,6 @@ WRONG_PARAM_COUNT; } args = (pval ***)ecalloc(argc, sizeof(pval **)); - if (args == NULL) { - RETURN_FALSE; - } if (zend_get_parameters_array_ex(argc, args) == FAILURE) { efree((void *)args); WRONG_PARAM_COUNT; @@ -2508,96 +2499,9 @@ from_encoding = mbfl_no_encoding_invalid; stack_max = PHP_MBSTR_STACK_BLOCK_SIZE; stack = (pval ***)emalloc(stack_max*sizeof(pval **)); - if (stack != NULL) { - stack_level = 0; - identd = mbfl_encoding_detector_new(elist, elistsz TSRMLS_CC); - if (identd != NULL) { - n = 2; - while (n < argc || stack_level > 0) { - if (stack_level <= 0) { - var = args[n++]; - if (Z_TYPE_PP(var) == IS_ARRAY || Z_TYPE_PP(var) == IS_OBJECT) { - target_hash = HASH_OF(*var); - if (target_hash != NULL) { - zend_hash_internal_pointer_reset(target_hash); - } - } - } else { - stack_level--; - var = stack[stack_level]; - } - if (Z_TYPE_PP(var) == IS_ARRAY || Z_TYPE_PP(var) == IS_OBJECT) { - target_hash = HASH_OF(*var); - if (target_hash != NULL) { - while (zend_hash_get_current_data(target_hash, (void **) &hash_entry) != FAILURE) { - zend_hash_move_forward(target_hash); - if (Z_TYPE_PP(hash_entry) == IS_ARRAY || Z_TYPE_PP(hash_entry) == IS_OBJECT) { - if (stack_level >= stack_max) { - stack_max += PHP_MBSTR_STACK_BLOCK_SIZE; - ptmp = erealloc(stack, sizeof(pval **)*stack_max); - if (ptmp == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "stack err at %s:(%d)", __FILE__, __LINE__); - continue; - } - stack = (pval ***)ptmp; - } - stack[stack_level] = var; - stack_level++; - var = hash_entry; - target_hash = HASH_OF(*var); - if (target_hash != NULL) { - zend_hash_internal_pointer_reset(target_hash); - continue; - } - } else if (Z_TYPE_PP(hash_entry) == IS_STRING) { - string.val = (unsigned char *)Z_STRVAL_PP(hash_entry); - string.len = Z_STRLEN_PP(hash_entry); - if (mbfl_encoding_detector_feed(identd, &string TSRMLS_CC)) { - goto detect_end; /* complete detecting */ - } - } - } - } - } else if (Z_TYPE_PP(var) == IS_STRING) { - string.val = (unsigned char *)Z_STRVAL_PP(var); - string.len = Z_STRLEN_PP(var); - if (mbfl_encoding_detector_feed(identd, &string TSRMLS_CC)) { - goto detect_end; /* complete detecting */ - } - } - } -detect_end: - from_encoding = mbfl_encoding_detector_judge(identd TSRMLS_CC); - mbfl_encoding_detector_delete(identd TSRMLS_CC); - } - efree(stack); - } - if (from_encoding == mbfl_no_encoding_invalid) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to detect encoding"); - from_encoding = mbfl_no_encoding_pass; - } - } - if (elist != NULL) { - efree((void *)elist); - } - /* create converter */ - convd = NULL; - if (from_encoding != mbfl_no_encoding_pass) { - convd = mbfl_buffer_converter_new(from_encoding, to_encoding, 0 TSRMLS_CC); - if (convd == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter"); - RETURN_FALSE; - } - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode) TSRMLS_CC); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar) TSRMLS_CC); - } - - /* convert */ - if (convd != NULL) { - stack_max = PHP_MBSTR_STACK_BLOCK_SIZE; - stack = (pval ***)emalloc(stack_max*sizeof(pval **)); - if (stack != NULL) { - stack_level = 0; + stack_level = 0; + identd = mbfl_encoding_detector_new(elist, elistsz TSRMLS_CC); + if (identd != NULL) { n = 2; while (n < argc || stack_level > 0) { if (stack_level <= 0) { @@ -2621,10 +2525,6 @@ if (stack_level >= stack_max) { stack_max += PHP_MBSTR_STACK_BLOCK_SIZE; ptmp = erealloc(stack, sizeof(pval **)*stack_max); - if (ptmp == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "stack err at %s:(%d)", __FILE__, __LINE__); - continue; - } stack = (pval ***)ptmp; } stack[stack_level] = var; @@ -2638,11 +2538,8 @@ } else if (Z_TYPE_PP(hash_entry) == IS_STRING) { string.val = (unsigned char *)Z_STRVAL_PP(hash_entry); string.len = Z_STRLEN_PP(hash_entry); - ret = mbfl_buffer_converter_feed_result(convd, &string, &result TSRMLS_CC); - if (ret != NULL) { - STR_FREE(Z_STRVAL_PP(hash_entry)); - Z_STRVAL_PP(hash_entry) = (char *)ret->val; - Z_STRLEN_PP(hash_entry) = ret->len; + if +(mbfl_encoding_detector_feed(identd, &string TSRMLS_CC)) { + goto +detect_end; /* complete detecting */ } } } @@ -2650,16 +2547,100 @@ } else if (Z_TYPE_PP(var) == IS_STRING) { string.val = (unsigned char *)Z_STRVAL_PP(var); string.len = Z_STRLEN_PP(var); - ret = mbfl_buffer_converter_feed_result(convd, &string, &result TSRMLS_CC); - if (ret != NULL) { - STR_FREE(Z_STRVAL_PP(var)); - Z_STRVAL_PP(var) = (char *)ret->val; - Z_STRLEN_PP(var) = ret->len; + if (mbfl_encoding_detector_feed(identd, +&string TSRMLS_CC)) { + goto detect_end; /* +complete detecting */ } } } - efree(stack); +detect_end: + from_encoding = mbfl_encoding_detector_judge(identd TSRMLS_CC); + mbfl_encoding_detector_delete(identd TSRMLS_CC); } + efree(stack); + + if (from_encoding == mbfl_no_encoding_invalid) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to detect +encoding"); + from_encoding = mbfl_no_encoding_pass; + } + } + if (elist != NULL) { + efree((void *)elist); + } + /* create converter */ + convd = NULL; + if (from_encoding != mbfl_no_encoding_pass) { + convd = mbfl_buffer_converter_new(from_encoding, to_encoding, 0 +TSRMLS_CC); + if (convd == NULL) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create +converter"); + RETURN_FALSE; + } + mbfl_buffer_converter_illegal_mode(convd, +MBSTRG(current_filter_illegal_mode) TSRMLS_CC); + mbfl_buffer_converter_illegal_substchar(convd, +MBSTRG(current_filter_illegal_substchar) TSRMLS_CC); + } + + /* convert */ + if (convd != NULL) { + stack_max = PHP_MBSTR_STACK_BLOCK_SIZE; + stack = (pval ***)emalloc(stack_max*sizeof(pval **)); + stack_level = 0; + n = 2; + while (n < argc || stack_level > 0) { + if (stack_level <= 0) { + var = args[n++]; + if (Z_TYPE_PP(var) == IS_ARRAY || Z_TYPE_PP(var) == +IS_OBJECT) { + target_hash = HASH_OF(*var); + if (target_hash != NULL) { + +zend_hash_internal_pointer_reset(target_hash); + } + } + } else { + stack_level--; + var = stack[stack_level]; + } + if (Z_TYPE_PP(var) == IS_ARRAY || Z_TYPE_PP(var) == IS_OBJECT) +{ + target_hash = HASH_OF(*var); + if (target_hash != NULL) { + while (zend_hash_get_current_data(target_hash, +(void **) &hash_entry) != FAILURE) { + zend_hash_move_forward(target_hash); + if (Z_TYPE_PP(hash_entry) == IS_ARRAY +|| Z_TYPE_PP(hash_entry) == IS_OBJECT) { + if (stack_level >= stack_max) { + stack_max += +PHP_MBSTR_STACK_BLOCK_SIZE; + ptmp = erealloc(stack, +sizeof(pval **)*stack_max); + stack = (pval ***)ptmp; + } + stack[stack_level] = var; + stack_level++; + var = hash_entry; + target_hash = HASH_OF(*var); + if (target_hash != NULL) { + +zend_hash_internal_pointer_reset(target_hash); + continue; + } + } else if (Z_TYPE_PP(hash_entry) == +IS_STRING) { + string.val = (unsigned char +*)Z_STRVAL_PP(hash_entry); + string.len = +Z_STRLEN_PP(hash_entry); + ret = +mbfl_buffer_converter_feed_result(convd, &string, &result TSRMLS_CC); + if (ret != NULL) { + +STR_FREE(Z_STRVAL_PP(hash_entry)); + +Z_STRVAL_PP(hash_entry) = (char *)ret->val; + +Z_STRLEN_PP(hash_entry) = ret->len; + } + } + } + } + } else if (Z_TYPE_PP(var) == IS_STRING) { + string.val = (unsigned char *)Z_STRVAL_PP(var); + string.len = Z_STRLEN_PP(var); + ret = mbfl_buffer_converter_feed_result(convd, +&string, &result TSRMLS_CC); + if (ret != NULL) { + STR_FREE(Z_STRVAL_PP(var)); + Z_STRVAL_PP(var) = (char *)ret->val; + Z_STRLEN_PP(var) = ret->len; + } + } + } + efree(stack); + mbfl_buffer_converter_delete(convd TSRMLS_CC); } @@ -2719,19 +2700,17 @@ i = zend_hash_num_elements(target_hash); if (i > 0) { convmap = (int *)emalloc(i*sizeof(int)); - if (convmap != NULL) { - mapelm = convmap; - mapsize = 0; - while (i > 0) { - if (zend_hash_get_current_data(target_hash, (void **) &hash_entry) == FAILURE) { - break; - } - convert_to_long_ex(hash_entry); - *mapelm++ = Z_LVAL_PP(hash_entry); - mapsize++; - i--; - zend_hash_move_forward(target_hash); + mapelm = convmap; + mapsize = 0; + while (i > 0) { + if (zend_hash_get_current_data(target_hash, (void **) +&hash_entry) == FAILURE) { + break; } + convert_to_long_ex(hash_entry); + *mapelm++ = Z_LVAL_PP(hash_entry); + mapsize++; + i--; + zend_hash_move_forward(target_hash); } } } @@ -2937,9 +2916,7 @@ convert_to_string_ex(type); if (argc == 0 || !strcasecmp("all", Z_STRVAL_PP(type))) { - if (array_init(return_value) == FAILURE) { - RETURN_FALSE; - } + array_init(return_value); if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding))) != NULL) { add_assoc_string(return_value, "internal_encoding", name, 1); } @@ -3083,15 +3060,9 @@ list_size += strlen(name) + 1; if (!list) { list = (char*)emalloc(list_size); - if (!list) { - return -1; - } *list = (char)NULL; } else { list = (char*)erealloc(list, list_size); - if (!list) { - return -1; - } strcat(list, ","); } strcat(list, name);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php