]> granicus.if.org Git - php/commitdiff
More fixes fo ini_ handling functions
authorStanislav Malyshev <stas@php.net>
Tue, 5 Sep 2000 18:33:02 +0000 (18:33 +0000)
committerStanislav Malyshev <stas@php.net>
Tue, 5 Sep 2000 18:33:02 +0000 (18:33 +0000)
ext/standard/basic_functions.c

index 859f15a55c4d48a19be1f7332733ce3af22de588..02101d60f7efc175bd4bad7a9797c674892e51ea 100644 (file)
@@ -1832,6 +1832,7 @@ void test_class_startup()
 PHP_FUNCTION(ini_get)
 {
        pval **varname;
+       char *str;
 
        if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &varname)==FAILURE) {
                WRONG_PARAM_COUNT;
@@ -1839,15 +1840,13 @@ PHP_FUNCTION(ini_get)
 
        convert_to_string_ex(varname);
 
-       return_value->value.str.val = php_ini_string((*varname)->value.str.val, (*varname)->value.str.len+1, 0);
+       str = php_ini_string((*varname)->value.str.val, (*varname)->value.str.len+1, 0);
 
-       if (!return_value->value.str.val) {
+       if (!str) {
                RETURN_FALSE;
        }
 
-       return_value->value.str.len = strlen(return_value->value.str.val);
-       return_value->type = IS_STRING;
-       pval_copy_constructor(return_value);
+       RETURN_STRING(str,1);
 }
 /* }}} */
 
@@ -1866,13 +1865,14 @@ PHP_FUNCTION(ini_set)
        convert_to_string_ex(new_value);
 
        old_value = php_ini_string((*varname)->value.str.val, (*varname)->value.str.len+1, 0);
-
-       if (php_alter_ini_entry((*varname)->value.str.val, (*varname)->value.str.len+1, (*new_value)->value.str.val, (*new_value)->value.str.len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME)==FAILURE) {
-               RETURN_FALSE;
-       }
+       /* copy to return here, because alter might free it! */
        if (old_value) {
-               RETURN_STRING(old_value, 1);
+               RETVAL_STRING(old_value, 1);
        } else {
+               RETVAL_FALSE;
+       }
+
+       if (php_alter_ini_entry((*varname)->value.str.val, (*varname)->value.str.len+1, (*new_value)->value.str.val, (*new_value)->value.str.len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME)==FAILURE) {
                RETURN_FALSE;
        }
 }