source:
scripts/patches/bash-3.0-fixes-1.patch@
76a1d35
Last change on this file since 76a1d35 was 7f65c0e, checked in by , 19 years ago | |
---|---|
|
|
File size: 20.7 KB |
-
array.c
Submitted By: Jim Gifford (patches at jg555 dot com) Date: 2004-09-29 Initial Package Version: 3.0 Origin: Various Upstream Status: Already Applied Description: This is all the patches that were release by Chet for Bash 3.0. These will appear in the next release. The original patches are at ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches diff -Naur bash-3.0.orig/array.c bash-3.0/array.c
old new 451 451 */ 452 452 array_dispose_element(new); 453 453 free(element_value(ae)); 454 ae->value = savestring(v);454 ae->value = v ? savestring(v) : (char *)NULL; 455 455 return(0); 456 456 } else if (element_index(ae) > i) { 457 457 ADD_BEFORE(ae, new); -
arrayfunc.c
diff -Naur bash-3.0.orig/arrayfunc.c bash-3.0/arrayfunc.c
old new 611 611 var = find_variable (t); 612 612 613 613 free (t); 614 return var;614 return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; 615 615 } 616 616 617 617 /* Return a string containing the elements in the array and subscript -
bashline.c
diff -Naur bash-3.0.orig/bashline.c bash-3.0/bashline.c
old new 100 100 #endif 101 101 102 102 /* Helper functions for Readline. */ 103 static int bash_directory_expansion __P((char **)); 103 104 static int bash_directory_completion_hook __P((char **)); 104 105 static int filename_completion_ignore __P((char **)); 105 106 static int bash_push_line __P((void)); … … 292 293 /* See if we have anything to do. */ 293 294 at = strchr (rl_completer_word_break_characters, '@'); 294 295 if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0)) 295 return ;296 return old_value; 296 297 297 298 /* We have something to do. Do it. */ 298 299 nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off); … … 1406 1407 filename. */ 1407 1408 if (*hint_text == '~') 1408 1409 { 1409 int l, tl, vl; 1410 int l, tl, vl, dl; 1411 char *rd; 1410 1412 vl = strlen (val); 1411 1413 tl = strlen (hint_text); 1414 #if 0 1412 1415 l = vl - hint_len; /* # of chars added */ 1416 #else 1417 rd = savestring (filename_hint); 1418 bash_directory_expansion (&rd); 1419 dl = strlen (rd); 1420 l = vl - dl; /* # of chars added */ 1421 free (rd); 1422 #endif 1413 1423 temp = (char *)xmalloc (l + 2 + tl); 1414 1424 strcpy (temp, hint_text); 1415 1425 strcpy (temp + tl, val + vl - l); … … 2187 2197 return 0; 2188 2198 } 2189 2199 2200 /* Simulate the expansions that will be performed by 2201 rl_filename_completion_function. This must be called with the address of 2202 a pointer to malloc'd memory. */ 2203 static int 2204 bash_directory_expansion (dirname) 2205 char **dirname; 2206 { 2207 char *d; 2208 2209 d = savestring (*dirname); 2210 2211 if (rl_directory_rewrite_hook) 2212 (*rl_directory_rewrite_hook) (&d); 2213 2214 if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) 2215 { 2216 free (*dirname); 2217 *dirname = d; 2218 } 2219 } 2220 2190 2221 /* Handle symbolic link references and other directory name 2191 2222 expansions while hacking completion. */ 2192 2223 static int … … 2513 2544 static char **matches = (char **)NULL; 2514 2545 static int ind; 2515 2546 int glen; 2516 char *ret ;2547 char *ret, *ttext; 2517 2548 2518 2549 if (state == 0) 2519 2550 { … … 2523 2554 FREE (globorig); 2524 2555 FREE (globtext); 2525 2556 2557 ttext = bash_tilde_expand (text, 0); 2558 2526 2559 if (rl_explicit_arg) 2527 2560 { 2528 globorig = savestring (t ext);2529 glen = strlen (t ext);2561 globorig = savestring (ttext); 2562 glen = strlen (ttext); 2530 2563 globtext = (char *)xmalloc (glen + 2); 2531 strcpy (globtext, t ext);2564 strcpy (globtext, ttext); 2532 2565 globtext[glen] = '*'; 2533 2566 globtext[glen+1] = '\0'; 2534 2567 } 2535 2568 else 2536 globtext = globorig = savestring (text); 2569 globtext = globorig = savestring (ttext); 2570 2571 if (ttext != text) 2572 free (ttext); 2537 2573 2538 2574 matches = shell_glob_filename (globtext); 2539 2575 if (GLOB_FAILED (matches)) -
braces.c
diff -Naur bash-3.0.orig/braces.c bash-3.0/braces.c
old new 340 340 341 341 if (lhs_t == ST_CHAR) 342 342 { 343 lhs_v = lhs[0];344 rhs_v = rhs[0];343 lhs_v = (unsigned char)lhs[0]; 344 rhs_v = (unsigned char)rhs[0]; 345 345 } 346 346 else 347 347 { … … 402 402 { 403 403 pass_next = 1; 404 404 i++; 405 level++; 405 406 continue; 406 407 } 407 408 #endif -
builtins/trap.def
diff -Naur bash-3.0.orig/builtins/trap.def bash-3.0/builtins/trap.def
old new 23 23 24 24 $BUILTIN trap 25 25 $FUNCTION trap_builtin 26 $SHORT_DOC trap [-lp] [ [arg]signal_spec ...]26 $SHORT_DOC trap [-lp] [arg signal_spec ...] 27 27 The command ARG is to be read and executed when the shell receives 28 28 signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC 29 29 is supplied) or `-', each specified signal is reset to its original … … 87 87 trap_builtin (list) 88 88 WORD_LIST *list; 89 89 { 90 int list_signal_names, display, result, opt ;90 int list_signal_names, display, result, opt, first_signal; 91 91 92 92 list_signal_names = display = 0; 93 93 result = EXECUTION_SUCCESS; … … 118 118 else 119 119 { 120 120 char *first_arg; 121 int operation, sig ;121 int operation, sig, first_signal; 122 122 123 123 operation = SET; 124 124 first_arg = list->word->word; 125 first_signal = first_arg && *first_arg && all_digits (first_arg) && signal_object_p (first_arg, opt); 126 127 /* Backwards compatibility */ 128 if (first_signal) 129 operation = REVERT; 125 130 /* When in posix mode, the historical behavior of looking for a 126 131 missing first argument is disabled. To revert to the original 127 132 signal handling disposition, use `-' as the first argument. */ 128 if (posixly_correct == 0 && first_arg && *first_arg &&133 else if (posixly_correct == 0 && first_arg && *first_arg && 129 134 (*first_arg != '-' || first_arg[1]) && 130 135 signal_object_p (first_arg, opt) && list->next == 0) 131 136 operation = REVERT; -
doc/bashref.texi
diff -Naur bash-3.0.orig/doc/bashref.texi bash-3.0/doc/bashref.texi
old new 5953 5953 @item 5954 5954 The @code{trap} builtin doesn't check the first argument for a possible 5955 5955 signal specification and revert the signal handling to the original 5956 disposition if it is. If users want to reset the handler for a given 5956 disposition if it is, unless that argument consists solely of digits and 5957 is a valid signal number. If users want to reset the handler for a given 5957 5958 signal to the original disposition, they should use @samp{-} as the 5958 5959 first argument. 5959 5960 -
include/shmbutil.h
diff -Naur bash-3.0.orig/include/shmbutil.h bash-3.0/include/shmbutil.h
old new 31 31 extern size_t xmbsrtowcs __P((wchar_t *, const char **, size_t, mbstate_t *)); 32 32 extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *)); 33 33 34 extern size_t mbstrlen __P((const char *)); 35 34 36 extern char *xstrchr __P((const char *, int)); 35 37 36 38 #ifndef MB_INVALIDCH … … 38 40 #define MB_NULLWCH(x) ((x) == 0) 39 41 #endif 40 42 43 #define MBSLEN(s) (((s) && (s)[0]) ? ((s)[1] ? mbstrlen (s) : 1) : 0) 44 #define MB_STRLEN(s) ((MB_CUR_MAX > 1) ? MBSLEN (s) : STRLEN (s)) 45 41 46 #else /* !HANDLE_MULTIBYTE */ 42 47 43 48 #undef MB_LEN_MAX … … 54 59 #define MB_NULLWCH(x) (0) 55 60 #endif 56 61 62 #define MB_STRLEN(s) (STRLEN(s)) 63 57 64 #endif /* !HANDLE_MULTIBYTE */ 58 65 59 66 /* Declare and initialize a multibyte state. Call must be terminated -
bash-3.0
diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
old new 1778 1778 if (pipefail_opt) 1779 1779 { 1780 1780 fail = 0; 1781 for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next) 1782 if (p->status != EXECUTION_SUCCESS) fail = p->status; 1781 p = jobs[job]->pipe; 1782 do 1783 { 1784 if (p->status != EXECUTION_SUCCESS) fail = p->status; 1785 p = p->next; 1786 } 1787 while (p != jobs[job]->pipe); 1783 1788 return fail; 1784 1789 } 1785 1790 -
lib/readline/display.c
diff -Naur bash-3.0.orig/lib/readline/display.c bash-3.0/lib/readline/display.c
old new 201 201 int *lp, *lip, *niflp, *vlp; 202 202 { 203 203 char *r, *ret, *p; 204 int l, rl, last, ignoring, ninvis, invfl, in d, pind, physchars;204 int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; 205 205 206 206 /* Short-circuit if we can. */ 207 207 if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0) … … 222 222 r = ret = (char *)xmalloc (l + 1); 223 223 224 224 invfl = 0; /* invisible chars in first line of prompt */ 225 invflset = 0; /* we only want to set invfl once */ 225 226 226 227 for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++) 227 228 { … … 249 250 while (l--) 250 251 *r++ = *p++; 251 252 if (!ignoring) 252 rl += ind - pind; 253 { 254 rl += ind - pind; 255 physchars += _rl_col_width (pmt, pind, ind); 256 } 253 257 else 254 258 ninvis += ind - pind; 255 259 p--; /* compensate for later increment */ … … 259 263 { 260 264 *r++ = *p; 261 265 if (!ignoring) 262 rl++; /* visible length byte counter */ 266 { 267 rl++; /* visible length byte counter */ 268 physchars++; 269 } 263 270 else 264 271 ninvis++; /* invisible chars byte counter */ 265 272 } 266 273 267 if ( rl >= _rl_screenwidth)268 invfl = ninvis;269 270 if (ignoring == 0)271 physchars++;274 if (invflset == 0 && rl >= _rl_screenwidth) 275 { 276 invfl = ninvis; 277 invflset = 1; 278 } 272 279 } 273 280 } 274 281 … … 351 358 local_prompt = expand_prompt (p, &prompt_visible_length, 352 359 &prompt_last_invisible, 353 360 (int *)NULL, 354 (int *)NULL);361 &prompt_physical_chars); 355 362 c = *t; *t = '\0'; 356 363 /* The portion of the prompt string up to and including the 357 364 final newline is now null-terminated. */ 358 365 local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, 359 366 (int *)NULL, 360 367 &prompt_invis_chars_first_line, 361 &prompt_physical_chars);368 (int *)NULL); 362 369 *t = c; 363 370 return (prompt_prefix_length); 364 371 } … … 417 424 register int in, out, c, linenum, cursor_linenum; 418 425 register char *line; 419 426 int c_pos, inv_botlin, lb_botlin, lb_linenum; 420 int newlines, lpos, temp, modmark ;427 int newlines, lpos, temp, modmark, n0, num; 421 428 char *prompt_this_line; 422 429 #if defined (HANDLE_MULTIBYTE) 423 430 wchar_t wc; … … 573 580 574 581 #if defined (HANDLE_MULTIBYTE) 575 582 memset (_rl_wrapped_line, 0, vis_lbsize); 583 num = 0; 576 584 #endif 577 585 578 586 /* prompt_invis_chars_first_line is the number of invisible characters in … … 591 599 probably too much work for the benefit gained. How many people have 592 600 prompts that exceed two physical lines? 593 601 Additional logic fix from Edward Catmur <ed@catmur.co.uk> */ 602 #if defined (HANDLE_MULTIBYTE) 603 n0 = num; 604 temp = local_prompt ? strlen (local_prompt) : 0; 605 while (num < temp) 606 { 607 if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth) 608 { 609 num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); 610 break; 611 } 612 num++; 613 } 614 temp = num + 615 #else 594 616 temp = ((newlines + 1) * _rl_screenwidth) + 617 #endif /* !HANDLE_MULTIBYTE */ 595 618 ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line 596 619 : ((newlines == 1) ? wrap_offset : 0)) 597 620 : ((newlines == 0) ? wrap_offset :0)); 598 621 599 622 inv_lbreaks[++newlines] = temp; 623 #if defined (HANDLE_MULTIBYTE) 624 lpos -= _rl_col_width (local_prompt, n0, num); 625 #else 600 626 lpos -= _rl_screenwidth; 627 #endif 601 628 } 602 629 603 630 prompt_last_screen_line = newlines; -
lib/readline/mbutil.c
diff -Naur bash-3.0.orig/lib/readline/mbutil.c bash-3.0/lib/readline/mbutil.c
old new 126 126 if (find_non_zero) 127 127 { 128 128 tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); 129 while ( wcwidth (wc) == 0)129 while (tmp > 0 && wcwidth (wc) == 0) 130 130 { 131 131 point += tmp; 132 132 tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); 133 if ( tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))133 if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) 134 134 break; 135 135 } 136 136 } -
lib/readline/misc.c
diff -Naur bash-3.0.orig/lib/readline/misc.c bash-3.0/lib/readline/misc.c
old new 276 276 _rl_saved_line_for_history->line = savestring (rl_line_buffer); 277 277 _rl_saved_line_for_history->data = (char *)rl_undo_list; 278 278 } 279 else if (STREQ (rl_line_buffer, _rl_saved_line_for_history->line) == 0)280 {281 free (_rl_saved_line_for_history->line);282 _rl_saved_line_for_history->line = savestring (rl_line_buffer);283 _rl_saved_line_for_history->data = (char *)rl_undo_list; /* XXX possible memleak */284 }285 279 286 280 return 0; 287 281 } -
lib/readline/vi_mode.c
diff -Naur bash-3.0.orig/lib/readline/vi_mode.c bash-3.0/lib/readline/vi_mode.c
old new 272 272 switch (key) 273 273 { 274 274 case '?': 275 _rl_free_saved_history_line (); 275 276 rl_noninc_forward_search (count, key); 276 277 break; 277 278 278 279 case '/': 280 _rl_free_saved_history_line (); 279 281 rl_noninc_reverse_search (count, key); 280 282 break; 281 283 … … 690 692 { 691 693 wchar_t wc; 692 694 char mb[MB_LEN_MAX+1]; 693 int mblen ;695 int mblen, p; 694 696 mbstate_t ps; 695 697 696 698 memset (&ps, 0, sizeof (mbstate_t)); … … 713 715 /* Vi is kind of strange here. */ 714 716 if (wc) 715 717 { 718 p = rl_point; 716 719 mblen = wcrtomb (mb, wc, &ps); 717 720 if (mblen >= 0) 718 721 mb[mblen] = '\0'; 719 722 rl_begin_undo_group (); 720 rl_delete (1, 0); 723 rl_vi_delete (1, 0); 724 if (rl_point < p) /* Did we retreat at EOL? */ 725 rl_point++; /* XXX - should we advance more than 1 for mbchar? */ 721 726 rl_insert_text (mb); 722 727 rl_end_undo_group (); 723 728 rl_vi_check (); … … 1310 1315 rl_vi_delete (1, c); 1311 1316 #if defined (HANDLE_MULTIBYTE) 1312 1317 if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) 1313 while (_rl_insert_char (1, c)) 1314 { 1315 RL_SETSTATE (RL_STATE_MOREINPUT); 1316 c = rl_read_key (); 1317 RL_UNSETSTATE (RL_STATE_MOREINPUT); 1318 } 1318 { 1319 if (rl_point < p) /* Did we retreat at EOL? */ 1320 rl_point++; 1321 while (_rl_insert_char (1, c)) 1322 { 1323 RL_SETSTATE (RL_STATE_MOREINPUT); 1324 c = rl_read_key (); 1325 RL_UNSETSTATE (RL_STATE_MOREINPUT); 1326 } 1327 } 1319 1328 else 1320 1329 #endif 1321 1330 { -
patchlevel.h
diff -Naur bash-3.0.orig/patchlevel.h bash-3.0/patchlevel.h
old new 25 25 regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh 26 26 looks for to find the patch level (for the sccs version string). */ 27 27 28 #define PATCHLEVEL 028 #define PATCHLEVEL 13 29 29 30 30 #endif /* _PATCHLEVEL_H_ */ -
pcomplete.c
diff -Naur bash-3.0.orig/pcomplete.c bash-3.0/pcomplete.c
old new 863 863 if (array_p (v) == 0) 864 864 v = convert_var_to_array (v); 865 865 v = assign_array_var_from_word_list (v, lwords); 866 867 VUNSETATTR (v, att_invisible); 866 868 return v; 867 869 } 868 870 #endif /* ARRAY_VARS */ … … 1022 1024 if (array_p (v) == 0) 1023 1025 v = convert_var_to_array (v); 1024 1026 1027 VUNSETATTR (v, att_invisible); 1028 1025 1029 a = array_cell (v); 1026 1030 if (a == 0 || array_empty (a)) 1027 1031 sl = (STRINGLIST *)NULL; -
subst.c
diff -Naur bash-3.0.orig/subst.c bash-3.0/subst.c
old new 4691 4691 legal_identifier (name + 1)); /* ${#PS1} */ 4692 4692 } 4693 4693 4694 #if defined (HANDLE_MULTIBYTE) 4695 size_t 4696 mbstrlen (s) 4697 const char *s; 4698 { 4699 size_t clen, nc; 4700 mbstate_t mbs; 4701 4702 nc = 0; 4703 memset (&mbs, 0, sizeof (mbs)); 4704 while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0)) 4705 { 4706 s += clen; 4707 nc++; 4708 } 4709 return nc; 4710 } 4711 #endif 4712 4713 4694 4714 /* Handle the parameter brace expansion that requires us to return the 4695 4715 length of a parameter. */ 4696 4716 static intmax_t … … 4746 4766 if (legal_number (name + 1, &arg_index)) /* ${#1} */ 4747 4767 { 4748 4768 t = get_dollar_var_value (arg_index); 4749 number = STRLEN (t);4769 number = MB_STRLEN (t); 4750 4770 FREE (t); 4751 4771 } 4752 4772 #if defined (ARRAY_VARS) 4753 else if ((var = find_variable (name + 1)) && array_p (var))4773 else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var)) 4754 4774 { 4755 4775 t = array_reference (array_cell (var), 0); 4756 number = STRLEN (t);4776 number = MB_STRLEN (t); 4757 4777 } 4758 4778 #endif 4759 4779 else /* ${#PS1} */ … … 4766 4786 if (list) 4767 4787 dispose_words (list); 4768 4788 4769 number = STRLEN (t);4789 number = MB_STRLEN (t); 4770 4790 FREE (t); 4771 4791 } 4772 4792 } … … 4871 4891 { 4872 4892 case VT_VARIABLE: 4873 4893 case VT_ARRAYMEMBER: 4874 len = strlen(value);4894 len = MB_STRLEN (value); 4875 4895 break; 4876 4896 case VT_POSPARMS: 4877 4897 len = number_of_args () + 1; … … 4891 4911 if (*e1p < 0) /* negative offsets count from end */ 4892 4912 *e1p += len; 4893 4913 4894 if (*e1p > =len || *e1p < 0)4914 if (*e1p > len || *e1p < 0) 4895 4915 return (-1); 4896 4916 4897 4917 #if defined (ARRAY_VARS) … … 4982 5002 else 4983 5003 return -1; 4984 5004 } 4985 else if ((v = find_variable (varname)) && array_p (v))5005 else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v)) 4986 5006 { 4987 5007 vtype = VT_ARRAYMEMBER; 4988 5008 *varp = v; -
tests/dbg-support.tests
diff -Naur bash-3.0.orig/tests/dbg-support.tests bash-3.0/tests/dbg-support.tests
old new 62 62 trap 'print_debug_trap $LINENO' DEBUG 63 63 trap 'print_return_trap $LINENO' RETURN 64 64 65 # Funcname is now an array . Vanilla Bash 2.05 doesn't have FUNCNAME array.66 echo "FUNCNAME" ${FUNCNAME[0] }65 # Funcname is now an array, but you still can't see it outside a function 66 echo "FUNCNAME" ${FUNCNAME[0]:-main} 67 67 68 68 # We should trace into the below. 69 69 # Start easy with a simple function. -
tests/errors.right
diff -Naur bash-3.0.orig/tests/errors.right bash-3.0/tests/errors.right
old new 85 85 ./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") 86 86 ./errors.tests: line 216: trap: NOSIG: invalid signal specification 87 87 ./errors.tests: line 219: trap: -s: invalid option 88 trap: usage: trap [-lp] [ [arg]signal_spec ...]88 trap: usage: trap [-lp] [arg signal_spec ...] 89 89 ./errors.tests: line 225: return: can only `return' from a function or sourced script 90 90 ./errors.tests: line 229: break: 0: loop count out of range 91 91 ./errors.tests: line 233: continue: 0: loop count out of range -
variables.c
diff -Naur bash-3.0.orig/variables.c bash-3.0/variables.c
old new 1419 1419 v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign); 1420 1420 1421 1421 # if defined (DEBUGGER) 1422 v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, (att_invisible|att_noassign));1423 v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, (att_invisible|att_noassign));1422 v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign); 1423 v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign); 1424 1424 # endif /* DEBUGGER */ 1425 v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, (att_invisible|att_noassign));1426 v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, (att_invisible|att_noassign));1425 v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign); 1426 v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign); 1427 1427 #endif 1428 1428 1429 1429 v = init_funcname_var (); … … 1599 1599 /* local foo; local foo; is a no-op. */ 1600 1600 old_var = find_variable (name); 1601 1601 if (old_var && local_p (old_var) && old_var->context == variable_context) 1602 return (old_var); 1602 { 1603 VUNSETATTR (old_var, att_invisible); 1604 return (old_var); 1605 } 1603 1606 1604 1607 was_tmpvar = old_var && tempvar_p (old_var); 1605 1608 if (was_tmpvar)
Note:
See TracBrowser
for help on using the repository browser.