Commit 3279bba6 by Richard Stallman

(do_spec_1): Propagate failure from recursive calls.

From-SVN: r3033
parent 7e1909ee
...@@ -2364,6 +2364,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2364,6 +2364,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
register int c; register int c;
int i; int i;
char *string; char *string;
int value;
while (c = *p++) while (c = *p++)
/* If substituting a switch, treat all chars like letters. /* If substituting a switch, treat all chars like letters.
...@@ -2407,7 +2408,7 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2407,7 +2408,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
if (argbuf_index > 0) if (argbuf_index > 0)
{ {
int value = execute (); value = execute ();
if (value) if (value)
return value; return value;
} }
...@@ -2730,39 +2731,57 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2730,39 +2731,57 @@ do_spec_1 (spec, inswitch, soft_matched_part)
a certain constant string as a spec. */ a certain constant string as a spec. */
case '1': case '1':
do_spec_1 (cc1_spec, 0, NULL_PTR); value = do_spec_1 (cc1_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case '2': case '2':
do_spec_1 (cc1plus_spec, 0, NULL_PTR); value = do_spec_1 (cc1plus_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'a': case 'a':
do_spec_1 (asm_spec, 0, NULL_PTR); value = do_spec_1 (asm_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'A': case 'A':
do_spec_1 (asm_final_spec, 0, NULL_PTR); value = do_spec_1 (asm_final_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'c': case 'c':
do_spec_1 (signed_char_spec, 0, NULL_PTR); value = do_spec_1 (signed_char_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'C': case 'C':
do_spec_1 (cpp_spec, 0, NULL_PTR); value = do_spec_1 (cpp_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'E': case 'E':
do_spec_1 (endfile_spec, 0, NULL_PTR); value = do_spec_1 (endfile_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'l': case 'l':
do_spec_1 (link_spec, 0, NULL_PTR); value = do_spec_1 (link_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'L': case 'L':
do_spec_1 (lib_spec, 0, NULL_PTR); value = do_spec_1 (lib_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
case 'p': case 'p':
...@@ -2789,7 +2808,9 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2789,7 +2808,9 @@ do_spec_1 (spec, inswitch, soft_matched_part)
*x = 0; *x = 0;
do_spec_1 (buf, 0, NULL_PTR); value = do_spec_1 (buf, 0, NULL_PTR);
if (value != 0)
return value;
} }
break; break;
...@@ -2895,12 +2916,16 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2895,12 +2916,16 @@ do_spec_1 (spec, inswitch, soft_matched_part)
*x = 0; *x = 0;
do_spec_1 (buf, 0, NULL_PTR); value = do_spec_1 (buf, 0, NULL_PTR);
if (value != 0)
return value;
} }
break; break;
case 'S': case 'S':
do_spec_1 (startfile_spec, 0, NULL_PTR); value = do_spec_1 (startfile_spec, 0, NULL_PTR);
if (value != 0)
return value;
break; break;
/* Here we define characters other than letters and digits. */ /* Here we define characters other than letters and digits. */
...@@ -2948,7 +2973,11 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2948,7 +2973,11 @@ do_spec_1 (spec, inswitch, soft_matched_part)
if (sl) if (sl)
{ {
if (c == '(') if (c == '(')
do_spec_1 (name, 0, NULL_PTR); {
value = do_spec_1 (name, 0, NULL_PTR);
if (value != 0)
return value;
}
else else
{ {
char *x = (char *) alloca (strlen (name) * 2 + 1); char *x = (char *) alloca (strlen (name) * 2 + 1);
...@@ -2981,7 +3010,9 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2981,7 +3010,9 @@ do_spec_1 (spec, inswitch, soft_matched_part)
} }
*x = 0; *x = 0;
do_spec_1 (buf, 0, NULL_PTR); value = do_spec_1 (buf, 0, NULL_PTR);
if (value != 0)
return value;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment