}
fname_len = strlen(ptr->fname);
lowercase_name = do_alloca(fname_len+1);
- memcpy(lowercase_name, ptr->fname, fname_len+1);
- zend_str_tolower(lowercase_name, fname_len);
+ zend_str_tolower_copy(lowercase_name, ptr->fname, fname_len);
if (zend_hash_add(target_function_table, lowercase_name, fname_len+1, &function, sizeof(zend_function), (void**)®_function) == FAILURE) {
unload=1;
free_alloca(lowercase_name);
ZEND_API zend_class_entry *zend_register_internal_class(zend_class_entry *orig_class_entry TSRMLS_DC)
{
zend_class_entry *class_entry = malloc(sizeof(zend_class_entry));
- char *lowercase_name = zend_strndup(orig_class_entry->name, orig_class_entry->name_length);
+ char *lowercase_name = malloc(orig_class_entry->name_length + 1);
*class_entry = *orig_class_entry;
class_entry->type = ZEND_INTERNAL_CLASS;
zend_register_functions(class_entry, class_entry->builtin_functions, &class_entry->function_table, MODULE_PERSISTENT TSRMLS_CC);
}
- zend_str_tolower(lowercase_name, class_entry->name_length);
+ zend_str_tolower_copy(lowercase_name, orig_class_entry->name, class_entry->name_length);
zend_hash_update(CG(class_table), lowercase_name, class_entry->name_length+1, &class_entry, sizeof(zend_class_entry *), NULL);
free(lowercase_name);
return class_entry;
if (!ns && ns_name) {
zend_namespace **pns;
size_t ns_name_length = strlen(ns_name);
- char *lowercase_name = zend_strndup(ns_name, ns_name_length);
- zend_str_tolower(lowercase_name, ns_name_length);
+ char *lowercase_name = malloc(ns_name_length + 1);
+ zend_str_tolower_copy(lowercase_name, ns_name, ns_name_length);
if (zend_hash_find(&CG(global_namespace).class_table, lowercase_name, ns_name_length+1, (void **)&pns) == FAILURE) {
free(lowercase_name);
return NULL;
ZEND_API zend_namespace *zend_register_internal_namespace(zend_namespace *orig_ns TSRMLS_DC)
{
zend_namespace *ns = malloc(sizeof(zend_namespace));
- char *lowercase_name = zend_strndup(orig_ns->name, orig_ns->name_length);
+ char *lowercase_name = malloc(orig_ns->name_length + 1);
*ns = *orig_ns;
ns->type = ZEND_INTERNAL_NAMESPACE;
zend_init_namespace(ns TSRMLS_CC);
- zend_str_tolower(lowercase_name, ns->name_length);
+ zend_str_tolower_copy(lowercase_name, orig_ns->name, orig_ns->name_length);
zend_hash_update(&CG(global_namespace).class_table, lowercase_name, ns->name_length+1, &ns, sizeof(zend_namespace *), NULL);
free(lowercase_name);
convert_to_string_ex(class_name);
- lcname = estrndup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name));
- zend_str_tolower(lcname, Z_STRLEN_PP(class_name));
+ lcname = zend_str_tolower_dup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name));
if (zend_lookup_ns_class(lcname, Z_STRLEN_PP(class_name), &ce TSRMLS_CC) == FAILURE) {
efree(lcname);
}
convert_to_string_ex(class_name);
- lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len);
- zend_str_tolower(lcname, (*class_name)->value.str.len);
+ lcname = zend_str_tolower_dup((*class_name)->value.str.val, (*class_name)->value.str.len);
if (zend_lookup_ns_class(lcname, Z_STRLEN_PP(class_name), &pce TSRMLS_CC) == FAILURE) {
efree(lcname);
}
convert_to_string_ex(method_name);
- lcname = estrndup((*method_name)->value.str.val, (*method_name)->value.str.len);
- zend_str_tolower(lcname, (*method_name)->value.str.len);
+ lcname = zend_str_tolower_dup((*method_name)->value.str.val, (*method_name)->value.str.len);
if (zend_hash_exists(&Z_OBJCE_PP(klass)->function_table, lcname, (*method_name)->value.str.len+1)) {
efree(lcname);
RETURN_TRUE;
return EG(global_namespace_ptr);
}
- str_ns_name = estrndup(Z_STRVAL_PP(namespace_name), Z_STRLEN_PP(namespace_name));
- zend_str_tolower(str_ns_name, Z_STRLEN_PP(namespace_name));
+ str_ns_name = zend_str_tolower_dup(Z_STRVAL_PP(namespace_name), Z_STRLEN_PP(namespace_name));
if(zend_hash_find(&EG(global_namespace_ptr)->class_table, str_ns_name, Z_STRLEN_PP(namespace_name)+1, (void **)&pns) == FAILURE || !CLASS_IS_NAMESPACE((*pns))) {
zend_error(E_WARNING, "Namespace '%s' is not defined!", Z_STRVAL_PP(namespace_name));
efree(str_ns_name);
}
convert_to_string_ex(class_name);
- lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len);
- zend_str_tolower(lcname, (*class_name)->value.str.len);
+ lcname = zend_str_tolower_dup((*class_name)->value.str.val, (*class_name)->value.str.len);
if (zend_lookup_ns_class(lcname, Z_STRLEN_PP(class_name), &ce TSRMLS_CC) == SUCCESS) {
efree(lcname);
RETURN_TRUE;
ZEND_WRONG_PARAM_COUNT();
}
convert_to_string_ex(function_name);
- lcname = estrndup((*function_name)->value.str.val, (*function_name)->value.str.len);
- zend_str_tolower(lcname, (*function_name)->value.str.len);
+ lcname = zend_str_tolower_dup((*function_name)->value.str.val, (*function_name)->value.str.len);
func_name_end = lcname + (*function_name)->value.str.len;
if((func_name = zend_memnstr(lcname, "::", sizeof("::")-1, func_name_end)) == NULL) {
if (zend_hash_find(EG(zend_constants), name, name_len+1, (void **) &c) == FAILURE) {
lookup_name = do_alloca(name_len+1);
- memcpy(lookup_name, name, name_len+1);
- zend_str_tolower(lookup_name, name_len);
+ zend_str_tolower_copy(lookup_name, name, name_len);
if (zend_hash_find(EG(zend_constants), lookup_name, name_len+1, (void **) &c)==SUCCESS) {
if ((c->flags & CONST_CS) && memcmp(c->name, name, name_len)!=0) {
printf("Registering constant for module %d\n", c->module_number);
#endif
- lowercase_name = do_alloca(c->name_len);
-
- memcpy(lowercase_name, c->name, c->name_len);
+ lowercase_name = do_alloca(c->name_len + 1);
if (!(c->flags & CONST_CS)) {
- zend_str_tolower(lowercase_name, c->name_len);
- }
+ zend_str_tolower_copy(lowercase_name, c->name, c->name_len);
+ } else {
+ memcpy(lowercase_name, c->name, c->name_len);
+ lowercase_name[c->name_len] = '\0';
+ }
if (zend_hash_add(EG(zend_constants), lowercase_name, c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) {
free(c->name);
lc_method_name = do_alloca(method_len+1);
/* Create a zend_copy_str_tolower(dest, src, src_length); */
- memcpy(lc_method_name, method_name, method_len+1);
- zend_str_tolower(lc_method_name, method_len);
+ zend_str_tolower_copy(lc_method_name, method_name, method_len);
zobj = Z_OBJ_P(object);
if (zend_hash_find(&zobj->ce->function_table, lc_method_name, method_len+1, (void **)&fbc) == FAILURE) {