X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/72cd9a913f6d282c5e24990505c2c820bda2bf1b..415b88231aca43bd321a6b039d5a7c3b5d9d80c6:/src/parse-gram.y?ds=sidebyside diff --git a/src/parse-gram.y b/src/parse-gram.y index 532349bb..ee1c324e 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -32,6 +32,7 @@ #include "symlist.h" #include "scan-gram.h" #include "scan-code.h" +#include "xmemdup0.h" #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N) static YYLTYPE lloc_default (YYLTYPE const *, int); @@ -341,7 +342,7 @@ prologue_declaration: | "%skeleton" STRING { char const *skeleton_user = $2; - if (mbschr (skeleton_user, '/')) + if (strchr (skeleton_user, '/')) { size_t dir_length = strlen (current_file); char *skeleton_build; @@ -353,7 +354,7 @@ prologue_declaration: xmalloc (dir_length + 1 + strlen (skeleton_user) + 1); if (dir_length > 0) { - strncpy (skeleton_build, current_file, dir_length); + memcpy (skeleton_build, current_file, dir_length); skeleton_build[dir_length++] = '/'; } strcpy (skeleton_build + dir_length, skeleton_user); @@ -389,14 +390,14 @@ grammar_declaration: { symbol_list *list; for (list = $3; list; list = list->next) - symbol_list_destructor_set (list, $2, @2); + symbol_list_code_props_set (list, destructor, @2, $2); symbol_list_free ($3); } | "%printer" "{...}" generic_symlist { symbol_list *list; for (list = $3; list; list = list->next) - symbol_list_printer_set (list, $2, @2); + symbol_list_code_props_set (list, printer, @2, $2); symbol_list_free ($3); } | "%default-prec" @@ -772,20 +773,11 @@ add_param (param_type type, char *decl, location loc) } if (! name_start) - complain_at (loc, _("missing identifier in parameter declaration")); + complain_at (loc, complaint, + _("missing identifier in parameter declaration")); else { - char *name; - size_t name_len; - - for (name_len = 1; - memchr (alphanum, name_start[name_len], sizeof alphanum); - name_len++) - continue; - - name = xmalloc (name_len + 1); - memcpy (name, name_start, name_len); - name[name_len] = '\0'; + char *name = xmemdup0 (name_start, strspn (name_start, alphanum)); if (type & param_lex) muscle_pair_list_grow ("lex_param", decl, name); if (type & param_parse) @@ -802,7 +794,7 @@ version_check (location const *loc, char const *version) { if (strverscmp (version, PACKAGE_VERSION) > 0) { - complain_at (*loc, "require bison %s, but have %s", + complain_at (*loc, complaint, "require bison %s, but have %s", version, PACKAGE_VERSION); exit (EX_MISMATCH); } @@ -811,7 +803,7 @@ version_check (location const *loc, char const *version) static void gram_error (location const *loc, char const *msg) { - complain_at (*loc, "%s", msg); + complain_at (*loc, complaint, "%s", msg); } char const *