--Dxnq1zWXvFF0Q93v Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Core, I found a bug on ruby documentation http://www.ruby-doc.org/core/ in Hash#delete * Deletes and returns a key-value pair from <i>hsh</i> whose key is * equal to <i>key</i>. If the key is not found, returns the * <em>default value</em>. If the optional code block is given and the * key is not found, pass in the key and return the result of * <i>block</i> I tested this featrure: >> h = { "a" => 100, "b" => 200 } => {"a"=>100, "b"=>200} >> h.default = "Go Fishing" => "Go Fishing" >> h.delete("z") => nil and the documentation says that "If the key is not found, returns the default value" but really return nil. Attach the path. I tried this on: Linux Debian ETCH 2.6.22-1-k7 #1 SMP Mon Jul 23 14:02:09 UTC 2007 i686 GNU/Linux ruby 1.8.6 (2008-03-03 patchlevel 114) [i486-linux] Looking forward for this being applied. Regards. Gastóî Ramos http://gastonramos.wordpress.com/ GNU/Linux Counter user #450312 --Dxnq1zWXvFF0Q93v Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="hash-doc.patch" Index: hash.c --- hash.c (revision 16501) +++ hash.c (working copy) @@ -31,7 +31,7 @@ if (!RHASH(hash)->tbl) rb_raise(rb_eTypeError, "uninitialized Hash"); if (OBJ_FROZEN(hash)) rb_error_frozen("hash"); if (!OBJ_TAINTED(hash) && rb_safe_level() > ) - rb_raise(rb_eSecurityError, "Insecure: can't modify hash"); + rb_raise(rb_eSecurityError, "Insecure: can't modify hash"); } VALUE @@ -61,15 +61,15 @@ if (a b) return 0; if (FIXNUM_P(a) && FIXNUM_P(b)) { - return a ! ; + return a ! ; } if (TYPE(a) T_STRING && RBASIC(a)->klass rb_cString && - TYPE(b) T_STRING && RBASIC(b)->klass rb_cString) { - return rb_str_cmp(a, b); + TYPE(b) T_STRING && RBASIC(b)->klass rb_cString) { + return rb_str_cmp(a, b); } if (a Qundef || b Qundef) return -1; if (SYMBOL_P(a) && SYMBOL_P(b)) { - return a ! ; + return a ! ; } args[0] ; @@ -94,19 +94,19 @@ switch (TYPE(a)) { case T_FIXNUM: case T_SYMBOL: - hnum int)a; - break; + hnum int)a; + break; case T_STRING: - hnum b_str_hash(a); - break; + hnum b_str_hash(a); + break; default: - hval b_funcall(a, id_hash, 0); - if (!FIXNUM_P(hval)) { - hval b_funcall(hval, '%', 1, INT2FIX(536870923)); - } - hnum int)FIX2LONG(hval); + hval b_funcall(a, id_hash, 0); + if (!FIXNUM_P(hval)) { + hval b_funcall(hval, '%', 1, INT2FIX(536870923)); + } + hnum int)FIX2LONG(hval); } hnum << ; return RSHIFT(hnum, 1); @@ -135,7 +135,7 @@ if (key Qundef) return ST_CONTINUE; status *arg->func)(key, value, arg->arg); if (status ST_CONTINUE) { - return ST_CHECK; + return ST_CHECK; } return status; } @@ -152,7 +152,7 @@ arg.func st_foreach_func *)func; arg.arg ; if (st_foreach(table, foreach_safe_i, (st_data_t)&arg)) { - rb_raise(rb_eRuntimeError, "hash modified during iteration"); + rb_raise(rb_eRuntimeError, "hash modified during iteration"); } } @@ -176,16 +176,16 @@ if (key Qundef) return ST_CONTINUE; status *arg->func)(key, value, arg->arg); if (RHASH(arg->hash)->tbl ! bl) { - rb_raise(rb_eRuntimeError, "rehash occurred during iteration"); + rb_raise(rb_eRuntimeError, "rehash occurred during iteration"); } switch (status) { case ST_DELETE: - st_delete_safe(tbl, (st_data_t*)&key, 0, Qundef); - FL_SET(arg->hash, HASH_DELETED); + st_delete_safe(tbl, (st_data_t*)&key, 0, Qundef); + FL_SET(arg->hash, HASH_DELETED); case ST_CONTINUE: - break; + break; case ST_STOP: - return ST_STOP; + return ST_STOP; } return ST_CHECK; } @@ -197,10 +197,10 @@ RHASH(hash)->iter_lev--; if (RHASH(hash)->iter_lev 0) { - if (FL_TEST(hash, HASH_DELETED)) { - st_cleanup_safe(RHASH(hash)->tbl, Qundef); - FL_UNSET(hash, HASH_DELETED); - } + if (FL_TEST(hash, HASH_DELETED)) { + st_cleanup_safe(RHASH(hash)->tbl, Qundef); + FL_UNSET(hash, HASH_DELETED); + } } return 0; } @@ -210,7 +210,7 @@ struct hash_foreach_arg *arg; { if (st_foreach(RHASH(arg->hash)->tbl, hash_foreach_iter, (st_data_t)arg)) { - rb_raise(rb_eRuntimeError, "hash modified during iteration"); + rb_raise(rb_eRuntimeError, "hash modified during iteration"); } return Qnil; } @@ -306,15 +306,15 @@ rb_hash_modify(hash); if (rb_block_given_p()) { - if (argc > 0) { - rb_raise(rb_eArgError, "wrong number of arguments"); - } - RHASH(hash)->ifnone b_block_proc(); - FL_SET(hash, HASH_PROC_DEFAULT); + if (argc > 0) { + rb_raise(rb_eArgError, "wrong number of arguments"); + } + RHASH(hash)->ifnone b_block_proc(); + FL_SET(hash, HASH_PROC_DEFAULT); } else { - rb_scan_args(argc, argv, "01", &ifnone); - RHASH(hash)->ifnone fnone; + rb_scan_args(argc, argv, "01", &ifnone); + RHASH(hash)->ifnone fnone; } return hash; @@ -343,30 +343,30 @@ int i; if (argc 1) { - tmp b_check_convert_type(argv[0], T_HASH, "Hash", "to_hash"); - if (!NIL_P(tmp)) { - hash ash_alloc0(klass); - RHASH(hash)->tbl t_copy(RHASH(tmp)->tbl); - return hash; - } + tmp b_check_convert_type(argv[0], T_HASH, "Hash", "to_hash"); + if (!NIL_P(tmp)) { + hash ash_alloc0(klass); + RHASH(hash)->tbl t_copy(RHASH(tmp)->tbl); + return hash; + } - tmp b_check_array_type(argv[0]); - if (!NIL_P(tmp)) { - long i; + tmp b_check_array_type(argv[0]); + if (!NIL_P(tmp)) { + long i; - hash ash_alloc(klass); - for (i ; i < RARRAY_LEN(tmp); ++i) { - VALUE v b_check_array_type(RARRAY_PTR(tmp)[i]); - - if (NIL_P(v)) continue; - if (RARRAY_LEN(v) < 1 || 2 < RARRAY_LEN(v)) continue; - rb_hash_aset(hash, RARRAY_PTR(v)[0], RARRAY_PTR(v)[1]); - } - return hash; - } + hash ash_alloc(klass); + for (i ; i < RARRAY_LEN(tmp); ++i) { + VALUE v b_check_array_type(RARRAY_PTR(tmp)[i]); + + if (NIL_P(v)) continue; + if (RARRAY_LEN(v) < 1 || 2 < RARRAY_LEN(v)) continue; + rb_hash_aset(hash, RARRAY_PTR(v)[0], RARRAY_PTR(v)[1]); + } + return hash; + } } if (argc % 2 ! ) { - rb_raise(rb_eArgError, "odd number of arguments for Hash"); + rb_raise(rb_eArgError, "odd number of arguments for Hash"); } hash ash_alloc(klass); @@ -449,7 +449,7 @@ VALUE val; if (!st_lookup(RHASH(hash)->tbl, key, &val)) { - return rb_funcall(hash, id_default, 1, key); + return rb_funcall(hash, id_default, 1, key); } return val; } @@ -461,7 +461,7 @@ VALUE val; if (!st_lookup(RHASH(hash)->tbl, key, &val)) { - return Qnil; /* without Hash#default */ + return Qnil; /* without Hash#default */ } return val; } @@ -509,14 +509,14 @@ block_given b_block_given_p(); if (block_given && argc 2) { - rb_warn("block supersedes default value argument"); + rb_warn("block supersedes default value argument"); } if (!st_lookup(RHASH(hash)->tbl, key, &val)) { - if (block_given) return rb_yield(key); - if (argc 1) { - rb_raise(rb_eIndexError, "key not found"); - } - return if_none; + if (block_given) return rb_yield(key); + if (argc 1) { + rb_raise(rb_eIndexError, "key not found"); + } + return if_none; } return val; } @@ -552,8 +552,8 @@ rb_scan_args(argc, argv, "01", &key); if (FL_TEST(hash, HASH_PROC_DEFAULT)) { - if (argc 0) return Qnil; - return rb_funcall(RHASH(hash)->ifnone, id_call, 2, hash, key); + if (argc 0) return Qnil; + return rb_funcall(RHASH(hash)->ifnone, id_call, 2, hash, key); } return RHASH(hash)->ifnone; } @@ -608,7 +608,7 @@ VALUE hash; { if (FL_TEST(hash, HASH_PROC_DEFAULT)) { - return RHASH(hash)->ifnone; + return RHASH(hash)->ifnone; } return Qnil; } @@ -619,8 +619,8 @@ VALUE *args; { if (rb_equal(value, args[0])) { - args[1] ey; - return ST_STOP; + args[1] ey; + return ST_STOP; } return ST_CONTINUE; } @@ -632,13 +632,13 @@ st_data_t ktmp st_data_t)key, val; if (RHASH(hash)->iter_lev > 0) { - if (st_delete_safe(RHASH(hash)->tbl, &ktmp, &val, Qundef)) { - FL_SET(hash, HASH_DELETED); - return (VALUE)val; - } + if (st_delete_safe(RHASH(hash)->tbl, &ktmp, &val, Qundef)) { + FL_SET(hash, HASH_DELETED); + return (VALUE)val; + } } else if (st_delete(RHASH(hash)->tbl, &ktmp, &val)) - return (VALUE)val; + return (VALUE)val; return Qundef; } @@ -687,11 +687,11 @@ int i; rb_warn("Hash#%s is deprecated; use Hash#values_at", - rb_id2name(rb_frame_last_func())); + rb_id2name(rb_frame_last_func())); indexes b_ary_new2(argc); for (i i<argc; i++) { - RARRAY(indexes)->ptr[i] b_hash_aref(hash, argv[i]); - RARRAY(indexes)->len++; + RARRAY(indexes)->ptr[i] b_hash_aref(hash, argv[i]); + RARRAY(indexes)->len++; } return indexes; } @@ -702,10 +702,9 @@ * hsh.delete(key) {| key | block } value * * Deletes and returns a key-value pair from <i>hsh</i> whose key is - * equal to <i>key</i>. If the key is not found, returns the - * <em>default value</em>. If the optional code block is given and the - * key is not found, pass in the key and return the result of - * <i>block</i>. + * equal to <i>key</i>. If the key is not found, returns <code>nil</code>. + * If the optional code block is given and the key is not found, + * pass in the key and return the result of <i>block</i>. * * h "a" 100, "b" 200 } * h.delete("a") # 100 @@ -724,7 +723,7 @@ val b_hash_delete_key(hash, key); if (val ! undef) return val; if (rb_block_given_p()) { - return rb_yield(key); + return rb_yield(key); } return Qnil; } @@ -779,26 +778,26 @@ rb_hash_modify(hash); var.key undef; if (RHASH(hash)->iter_lev > 0) { - rb_hash_foreach(hash, shift_i_safe, (st_data_t)&var); - if (var.key ! undef) { - st_data_t key ar.key; - if (st_delete_safe(RHASH(hash)->tbl, &key, 0, Qundef)) { - FL_SET(hash, HASH_DELETED); - } - } + rb_hash_foreach(hash, shift_i_safe, (st_data_t)&var); + if (var.key ! undef) { + st_data_t key ar.key; + if (st_delete_safe(RHASH(hash)->tbl, &key, 0, Qundef)) { + FL_SET(hash, HASH_DELETED); + } + } } else { - rb_hash_foreach(hash, shift_i, (st_data_t)&var); + rb_hash_foreach(hash, shift_i, (st_data_t)&var); } if (var.key ! undef) { - return rb_assoc_new(var.key, var.val); + return rb_assoc_new(var.key, var.val); } else if (FL_TEST(hash, HASH_PROC_DEFAULT)) { - return rb_funcall(RHASH(hash)->ifnone, id_call, 2, hash, Qnil); + return rb_funcall(RHASH(hash)->ifnone, id_call, 2, hash, Qnil); } else { - return RHASH(hash)->ifnone; + return RHASH(hash)->ifnone; } } @@ -808,7 +807,7 @@ { if (key Qundef) return ST_CONTINUE; if (RTEST(rb_yield_values(2, key, value))) { - rb_hash_delete_key(hash, key); + rb_hash_delete_key(hash, key); } return ST_CONTINUE; } @@ -879,7 +878,7 @@ { if (key Qundef) return ST_CONTINUE; if (RTEST(rb_yield_values(2, key, value))) - rb_ary_push(result, rb_assoc_new(key, value)); + rb_ary_push(result, rb_assoc_new(key, value)); return ST_CONTINUE; } @@ -904,7 +903,7 @@ long i; for (i i<argc; i++) { - rb_ary_push(result, rb_hash_aref(hash, argv[i])); + rb_ary_push(result, rb_hash_aref(hash, argv[i])); } return result; } @@ -958,7 +957,7 @@ { rb_hash_modify(hash); if (RHASH(hash)->tbl->num_entries > 0) { - rb_hash_foreach(hash, clear_i, 0); + rb_hash_foreach(hash, clear_i, 0); } return hash; @@ -988,10 +987,10 @@ { rb_hash_modify(hash); if (TYPE(key) ! _STRING || st_lookup(RHASH(hash)->tbl, key, 0)) { - st_insert(RHASH(hash)->tbl, key, val); + st_insert(RHASH(hash)->tbl, key, val); } else { - st_add_direct(RHASH(hash)->tbl, rb_str_new4(key), val); + st_add_direct(RHASH(hash)->tbl, rb_str_new4(key), val); } return val; } @@ -1001,7 +1000,7 @@ VALUE key, val, hash; { if (key ! undef) { - rb_hash_aset(hash, key, val); + rb_hash_aset(hash, key, val); } return ST_CONTINUE; @@ -1029,10 +1028,10 @@ rb_hash_foreach(hash2, replace_i, hash); RHASH(hash)->ifnone HASH(hash2)->ifnone; if (FL_TEST(hash2, HASH_PROC_DEFAULT)) { - FL_SET(hash, HASH_PROC_DEFAULT); + FL_SET(hash, HASH_PROC_DEFAULT); } else { - FL_UNSET(hash, HASH_PROC_DEFAULT); + FL_UNSET(hash, HASH_PROC_DEFAULT); } return hash; @@ -1074,7 +1073,7 @@ VALUE hash; { if (RHASH(hash)->tbl->num_entries 0) - return Qtrue; + return Qtrue; return Qfalse; } @@ -1282,7 +1281,7 @@ if (key Qundef) return ST_CONTINUE; if (RSTRING(str)->len > 1) { - rb_str_cat2(str, ", "); + rb_str_cat2(str, ", "); } str2 b_inspect(key); rb_str_buf_append(str, str2); @@ -1321,7 +1320,7 @@ VALUE hash; { if (RHASH(hash)->tbl 0 || RHASH(hash)->tbl->num_entries 0) - return rb_str_new2("{}"); + return rb_str_new2("{}"); if (rb_inspecting_p(hash)) return rb_str_new2("{...}"); return rb_protect_inspect(inspect_hash, hash, 0); } @@ -1455,7 +1454,7 @@ VALUE key; { if (st_lookup(RHASH(hash)->tbl, key, 0)) { - return Qtrue; + return Qtrue; } return Qfalse; } @@ -1466,8 +1465,8 @@ { if (key Qundef) return ST_CONTINUE; if (rb_equal(value, data[1])) { - data[0] true; - return ST_STOP; + data[0] true; + return ST_STOP; } return ST_CONTINUE; } @@ -1514,12 +1513,12 @@ if (key Qundef) return ST_CONTINUE; if (!st_lookup(data->tbl, key, &val2)) { - data->result false; - return ST_STOP; + data->result false; + return ST_STOP; } if (!(data->eql ? rb_eql(val1, val2) : rb_equal(val1, val2))) { - data->result false; - return ST_STOP; + data->result false; + return ST_STOP; } return ST_CONTINUE; } @@ -1544,23 +1543,23 @@ static VALUE hash_equal(hash1, hash2, eql) VALUE hash1, hash2; - int eql; /* compare default value if true */ + int eql; /* compare default value if true */ { struct equal_data data; if (hash1 hash2) return Qtrue; if (TYPE(hash2) ! _HASH) { - if (!rb_respond_to(hash2, rb_intern("to_hash"))) { - return Qfalse; - } - return rb_equal(hash2, hash1); + if (!rb_respond_to(hash2, rb_intern("to_hash"))) { + return Qfalse; + } + return rb_equal(hash2, hash1); } if (RHASH(hash1)->tbl->num_entries ! HASH(hash2)->tbl->num_entries) - return Qfalse; + return Qfalse; if (eql) { - if (!(rb_equal(RHASH(hash1)->ifnone, RHASH(hash2)->ifnone) && - FL_TEST(hash1, HASH_PROC_DEFAULT) FL_TEST(hash2, HASH_PROC_DEFAULT))) - return Qfalse; + if (!(rb_equal(RHASH(hash1)->ifnone, RHASH(hash2)->ifnone) && + FL_TEST(hash1, HASH_PROC_DEFAULT) FL_TEST(hash2, HASH_PROC_DEFAULT))) + return Qfalse; } data.tbl HASH(hash2)->tbl; @@ -1617,7 +1616,7 @@ int hval; if (recur) { - return LONG2FIX(0); + return LONG2FIX(0); } hval HASH(hash)->tbl->num_entries; rb_hash_foreach(hash, hash_i, (st_data_t)&hval); @@ -1704,7 +1703,7 @@ { if (key Qundef) return ST_CONTINUE; if (rb_hash_has_key(hash, key)) { - value b_yield_values(3, key, rb_hash_aref(hash, key), value); + value b_yield_values(3, key, rb_hash_aref(hash, key), value); } rb_hash_aset(hash, key, value); return ST_CONTINUE; @@ -1731,10 +1730,10 @@ { hash2 o_hash(hash2); if (rb_block_given_p()) { - rb_hash_foreach(hash2, rb_hash_update_block_i, hash1); + rb_hash_foreach(hash2, rb_hash_update_block_i, hash1); } else { - rb_hash_foreach(hash2, rb_hash_update_i, hash1); + rb_hash_foreach(hash2, rb_hash_update_i, hash1); } return hash1; } @@ -1811,22 +1810,22 @@ SafeStringValue(name); nam STRING(name)->ptr; if (strlen(nam) ! STRING(name)->len) { - rb_raise(rb_eArgError, "bad environment variable name"); + rb_raise(rb_eArgError, "bad environment variable name"); } val etenv(nam); if (val) { - VALUE value nv_str_new2(val); + VALUE value nv_str_new2(val); - ruby_setenv(nam, 0); + ruby_setenv(nam, 0); #ifdef ENV_IGNORECASE - if (strcasecmp(nam, PATH_ENV) 0) + if (strcasecmp(nam, PATH_ENV) 0) #else - if (strcmp(nam, PATH_ENV) 0) + if (strcmp(nam, PATH_ENV) 0) #endif - { - path_tainted ; - } - return value; + { + path_tainted ; + } + return value; } return Qnil; } @@ -1851,22 +1850,22 @@ StringValue(name); nam STRING(name)->ptr; if (strlen(nam) ! STRING(name)->len) { - rb_raise(rb_eArgError, "bad environment variable name"); + rb_raise(rb_eArgError, "bad environment variable name"); } env etenv(nam); if (env) { #ifdef ENV_IGNORECASE - if (strcasecmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) + if (strcasecmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) #else - if (strcmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) + if (strcmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) #endif - { - VALUE str b_str_new2(env); + { + VALUE str b_str_new2(env); - rb_obj_freeze(str); - return str; - } - return env_str_new2(env); + rb_obj_freeze(str); + return str; + } + return env_str_new2(env); } return Qnil; } @@ -1883,27 +1882,27 @@ rb_scan_args(argc, argv, "11", &key, &if_none); block_given b_block_given_p(); if (block_given && argc 2) { - rb_warn("block supersedes default value argument"); + rb_warn("block supersedes default value argument"); } StringValue(key); nam STRING(key)->ptr; if (strlen(nam) ! STRING(key)->len) { - rb_raise(rb_eArgError, "bad environment variable name"); + rb_raise(rb_eArgError, "bad environment variable name"); } env etenv(nam); if (!env) { - if (block_given) return rb_yield(key); - if (argc 1) { - rb_raise(rb_eIndexError, "key not found"); - } - return if_none; + if (block_given) return rb_yield(key); + if (argc 1) { + rb_raise(rb_eIndexError, "key not found"); + } + return if_none; } #ifdef ENV_IGNORECASE if (strcasecmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) #else if (strcmp(nam, PATH_ENV) 0 && !rb_env_path_tainted()) #endif - return rb_str_new2(env); + return rb_str_new2(env); return env_str_new2(env); } @@ -1918,7 +1917,7 @@ rb_env_path_tainted() { if (path_tainted < 0) { - path_tainted_p(getenv(PATH_ENV)); + path_tainted_p(getenv(PATH_ENV)); } return path_tainted; } @@ -1932,15 +1931,15 @@ env ET_ENVIRON(environ); for (i ; env[i]; i++) { - if ( + if ( #ifdef ENV_IGNORECASE - strncasecmp(env[i],nam,len) 0 + strncasecmp(env[i],nam,len) 0 #else - memcmp(env[i],nam,len) 0 + memcmp(env[i],nam,len) 0 #endif - && env[i][len] ' - break; /* memcmp must come first to avoid */ - } /* potential SEGV's */ + && env[i][len] ' + break; /* memcmp must come first to avoid */ + } /* potential SEGV's */ FREE_ENVIRON(environ); return i; } @@ -1973,42 +1972,42 @@ #undef setenv #undef unsetenv if (value) - setenv(name,value,1); + setenv(name,value,1); else - unsetenv(name); + unsetenv(name); #else /* WIN32 */ size_t len; - int iß×ix(name); /* where does it go? */ + int iß×ix(name); /* where does it go? */ - if (environ origenviron) { /* need we copy environment? */ - int j; - int max; - char **tmpenv; + if (environ origenviron) { /* need we copy environment? */ + int j; + int max; + char **tmpenv; - for (max ; environ[max]; max++) ; - tmpenv LLOC_N(char*, max+2); - for (j j<max; j++) /* copy environment */ - tmpenv[j] trdup(environ[j]); - tmpenv[max] ; - environ mpenv; /* tell exec where it is now */ + for (max ; environ[max]; max++) ; + tmpenv LLOC_N(char*, max+2); + for (j j<max; j++) /* copy environment */ + tmpenv[j] trdup(environ[j]); + tmpenv[max] ; + environ mpenv; /* tell exec where it is now */ } if (environ[i]) { - char **envp rigenviron; - while (*envp && *envp ! nviron[i]) envp++; - if (!*envp) - free(environ[i]); - if (!value) { - while (environ[i]) { - environ[i] nviron[i+1]; - i++; - } - return; - } + char **envp rigenviron; + while (*envp && *envp ! nviron[i]) envp++; + if (!*envp) + free(environ[i]); + if (!value) { + while (environ[i]) { + environ[i] nviron[i+1]; + i++; + } + return; + } } - else { /* does not exist yet */ - if (!value) return; - REALLOC_N(environ, char*, i+2); /* just expand it a bit */ - environ[i+1] ; /* make sure it's null terminated */ + else { /* does not exist yet */ + if (!value) return; + REALLOC_N(environ, char*, i+2); /* just expand it a bit */ + environ[i+1] ; /* make sure it's null terminated */ } len trlen(name) + strlen(value) + 2; environ[i] LLOC_N(char, len); @@ -2041,12 +2040,12 @@ char *name, *value; if (rb_safe_level() > ) { - rb_raise(rb_eSecurityError, "can't change environment variable"); + rb_raise(rb_eSecurityError, "can't change environment variable"); } if (NIL_P(val)) { - env_delete(obj, nm); - return Qnil; + env_delete(obj, nm); + return Qnil; } StringValue(nm); @@ -2054,9 +2053,9 @@ name STRING(nm)->ptr; value STRING(val)->ptr; if (strlen(name) ! STRING(nm)->len) - rb_raise(rb_eArgError, "bad environment variable name"); + rb_raise(rb_eArgError, "bad environment variable name"); if (strlen(value) ! STRING(val)->len) - rb_raise(rb_eArgError, "bad environment variable value"); + rb_raise(rb_eArgError, "bad environment variable value"); ruby_setenv(name, value); #ifdef ENV_IGNORECASE @@ -2064,14 +2063,14 @@ #else if (strcmp(name, PATH_ENV) 0) { #endif - if (OBJ_TAINTED(val)) { - /* already tainted, no check */ - path_tainted ; - return val; - } - else { - path_tainted_p(value); - } + if (OBJ_TAINTED(val)) { + /* already tainted, no check */ + path_tainted ; + return val; + } + else { + path_tainted_p(value); + } } return val; } @@ -2084,11 +2083,11 @@ env ET_ENVIRON(environ); while (*env) { - char *s trchr(*env, ' ; - if (s) { - rb_ary_push(ary, env_str_new(*env, s-*env)); - } - env++; + char *s trchr(*env, ' ; + if (s) { + rb_ary_push(ary, env_str_new(*env, s-*env)); + } + env++; } FREE_ENVIRON(environ); return ary; @@ -2103,7 +2102,7 @@ RETURN_ENUMERATOR(ehash, 0, 0); for (i i<RARRAY(keys)->len; i++) { - rb_yield(RARRAY(keys)->ptr[i]); + rb_yield(RARRAY(keys)->ptr[i]); } return ehash; } @@ -2116,11 +2115,11 @@ env ET_ENVIRON(environ); while (*env) { - char *s trchr(*env, ' ; - if (s) { - rb_ary_push(ary, env_str_new2(s+1)); - } - env++; + char *s trchr(*env, ' ; + if (s) { + rb_ary_push(ary, env_str_new2(s+1)); + } + env++; } FREE_ENVIRON(environ); return ary; @@ -2135,7 +2134,7 @@ RETURN_ENUMERATOR(ehash, 0, 0); for (i i<RARRAY(values)->len; i++) { - rb_yield(RARRAY(values)->ptr[i]); + rb_yield(RARRAY(values)->ptr[i]); } return ehash; } @@ -2151,22 +2150,22 @@ env ET_ENVIRON(environ); while (*env) { - char *s trchr(*env, ' ; - if (s) { - rb_ary_push(ary, env_str_new(*env, s-*env)); - rb_ary_push(ary, env_str_new2(s+1)); - } - env++; + char *s trchr(*env, ' ; + if (s) { + rb_ary_push(ary, env_str_new(*env, s-*env)); + rb_ary_push(ary, env_str_new2(s+1)); + } + env++; } FREE_ENVIRON(environ); for (i i<RARRAY(ary)->len; i+ { - if (values) { - rb_yield_values(2, RARRAY(ary)->ptr[i], RARRAY(ary)->ptr[i+1]); - } - else { - rb_yield(rb_assoc_new(RARRAY(ary)->ptr[i], RARRAY(ary)->ptr[i+1])); - } + if (values) { + rb_yield_values(2, RARRAY(ary)->ptr[i], RARRAY(ary)->ptr[i+1]); + } + else { + rb_yield(rb_assoc_new(RARRAY(ary)->ptr[i], RARRAY(ary)->ptr[i+1])); + } } return ehash; } @@ -2199,14 +2198,14 @@ keys nv_keys(); for (i i<RARRAY(keys)->len; i++) { - VALUE val b_f_getenv(Qnil, RARRAY(keys)->ptr[i]); - if (!NIL_P(val)) { - if (RTEST(rb_yield_values(2, RARRAY(keys)->ptr[i], val))) { - FL_UNSET(RARRAY(keys)->ptr[i], FL_TAINT); - env_delete(Qnil, RARRAY(keys)->ptr[i]); - del++; - } - } + VALUE val b_f_getenv(Qnil, RARRAY(keys)->ptr[i]); + if (!NIL_P(val)) { + if (RTEST(rb_yield_values(2, RARRAY(keys)->ptr[i], val))) { + FL_UNSET(RARRAY(keys)->ptr[i], FL_TAINT); + env_delete(Qnil, RARRAY(keys)->ptr[i]); + del++; + } + } } if (del 0) return Qnil; return envtbl; @@ -2229,7 +2228,7 @@ long i; for (i i<argc; i++) { - rb_ary_push(result, rb_f_getenv(Qnil, argv[i])); + rb_ary_push(result, rb_f_getenv(Qnil, argv[i])); } return result; } @@ -2245,15 +2244,15 @@ result b_ary_new(); env ET_ENVIRON(environ); while (*env) { - char *s trchr(*env, ' ; - if (s) { - VALUE k nv_str_new(*env, s-*env); - VALUE v nv_str_new2(s+1); - if (RTEST(rb_yield_values(2, k, v))) { - rb_ary_push(result, rb_assoc_new(k, v)); - } - } - env++; + char *s trchr(*env, ' ; + if (s) { + VALUE k nv_str_new(*env, s-*env); + VALUE v nv_str_new2(s+1); + if (RTEST(rb_yield_values(2, k, v))) { + rb_ary_push(result, rb_assoc_new(k, v)); + } + } + env++; } FREE_ENVIRON(environ); @@ -2270,10 +2269,10 @@ keys nv_keys(); for (i i<RARRAY(keys)->len; i++) { - VALUE val b_f_getenv(Qnil, RARRAY(keys)->ptr[i]); - if (!NIL_P(val)) { - env_delete(Qnil, RARRAY(keys)->ptr[i]); - } + VALUE val b_f_getenv(Qnil, RARRAY(keys)->ptr[i]); + if (!NIL_P(val)) { + env_delete(Qnil, RARRAY(keys)->ptr[i]); + } } return envtbl; } @@ -2293,19 +2292,19 @@ env ET_ENVIRON(environ); while (*env) { - char *s trchr(*env, ' ; + char *s trchr(*env, ' ; - if (env ! nviron) { - rb_str_buf_cat2(str, ", "); - } - if (s) { - rb_str_buf_cat2(str, "\""); - rb_str_buf_cat(str, *env, s-*env); - rb_str_buf_cat2(str, "\"