php_error_docref(NULL,E_WARNING,"Invalid locale category name %s, must be one of LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME",category);
php_error_docref(NULL,E_WARNING,"Invalid locale category name %s, must be one of LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, or LC_TIME",category->val);
zval_dtor(&tmp);
zend_string_release(category);
RETURN_FALSE;
}
zval_dtor(&tmp);
zend_string_release(category);
}
if(Z_TYPE(args[0])==IS_ARRAY){
@ -4236,7 +4231,6 @@ PHP_FUNCTION(setlocale)
}
while(1){
zvaltmp;
if(Z_TYPE(args[0])==IS_ARRAY){
if(!zend_hash_num_elements(Z_ARRVAL(args[0]))){
break;
@ -4248,36 +4242,41 @@ PHP_FUNCTION(setlocale)
plocale=&args[i];
}
ZVAL_DUP(&tmp,plocale);
convert_to_string(&tmp);
loc=zval_get_string(plocale);
if(!strcmp("0",Z_STRVAL(tmp))){
if(!strcmp("0",loc->val)){
zend_string_release(loc);
loc=NULL;
}else{
loc=Z_STRVAL(tmp);
if(Z_STRLEN(tmp)>=255){
if(loc->len>=255){
php_error_docref(NULL,E_WARNING,"Specified locale name is too long");