char *stabstr_secname;
{
long longint;
- char *string;
+ char *string, *saved_string_obstack_end;
int type;
int other;
int desc;
'd' indicating which type of .stab this is. */
if (what != 's')
- string = "";
+ {
+ string = "";
+ saved_string_obstack_end = 0;
+ }
else
{
int length;
string = demand_copy_C_string (&length);
+ /* FIXME: We should probably find some other temporary storage
+ for string, rather than leaking memory if someone else
+ happens to use the notes obstack. */
+ saved_string_obstack_end = notes.next_free;
SKIP_WHITESPACE ();
if (*input_line_pointer == ',')
input_line_pointer++;
else
{
- as_warn (_(".stabs: Missing comma"));
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
if (get_absolute_expression_and_terminator (&longint) != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
if (get_absolute_expression_and_terminator (&longint) != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
{
if (*input_line_pointer != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
stroff = get_stab_string_offset (string, stabstr_secname);
if (what == 's')
{
- /* release the string */
- obstack_free (¬es, string);
+ /* Release the string, if nobody else has used the obstack. */
+ if (saved_string_obstack_end == notes.next_free)
+ obstack_free (¬es, string);
}
/* At least for now, stabs in a special stab section are always
if (*input_line_pointer != ',')
{
*p = 0;
- as_bad (_("Expected comma after name \"%s\""), name);
+ as_bad (_("expected comma after \"%s\""), name);
*p = c;
ignore_rest_of_line ();
}
while (tmp < endp)
{
char *bslash = strchr (tmp, '\\');
- int len = (bslash ? (bslash - tmp + 1) : strlen (tmp));
+ size_t len = (bslash) ? (size_t) (bslash - tmp + 1) : strlen (tmp);
/* Double all backslashes, since demand_copy_C_string (used by
s_stab to extract the part in quotes) will try to replace them as