bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/3] maint: simplify parse-gram.y


From: Jim Meyering
Subject: Re: [PATCH 2/3] maint: simplify parse-gram.y
Date: Sat, 05 May 2012 15:26:16 +0200

Akim Demaille wrote:
> Thanks for the fixes, please install (in the maint branch
> preferably).  Beware that this patch (2/3) already includes
> a parse-gram.c regen part that should be part of 3/3.  Also:
>
> Le 3 mai 2012 à 23:18, Jim Meyering a écrit :
>
>> diff --git a/src/parse-gram.y b/src/parse-gram.y
>> index 2cf436b..916b70d 100644
>> --- a/src/parse-gram.y
>> +++ b/src/parse-gram.y
>> @@ -783,9 +783,7 @@ add_param (param_type type, char *decl, location loc)
>>         name_len++)
>>      continue;
>>
>> -      name = xmalloc (name_len + 1);
>> -      memcpy (name, name_start, name_len);
>> -      name[name_len] = '\0';
>> +      name = xstrdup (name_start);
>>    if (type & param_lex)
>>      muscle_pair_list_grow ("lex_param", decl, name);
>>    if (type & param_parse)
>
> This does not seem right: you no longer take name_len
> into account.  The full context is:

Fixing that and applying your suggestion to use strspn in 2/2
and rebasing to maint, I get the following.  Will push later today.

>From 121474cea7f26a27130f8f66b8dba8dc3e5ff52d Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sat, 5 May 2012 11:30:01 +0200
Subject: [PATCH 1/2] maint: s/strncpy/memcpy/, when equivalent

* src/output.c (output_skeleton): Use memcpy, not strncpy,
since the source is known to fit in the destination buffer.
* src/parse-gram.y (%skeleton): Likewise.
---
 src/output.c     | 2 +-
 src/parse-gram.y | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/output.c b/src/output.c
index c481e14..e0d6ed3 100644
--- a/src/output.c
+++ b/src/output.c
@@ -512,7 +512,7 @@ output_skeleton (void)
   full_skeleton = xmalloc (pkgdatadirlen + 1
                           + (skeleton_size < sizeof m4sugar
                              ? sizeof m4sugar : skeleton_size));
-  strncpy (full_skeleton, pkgdatadir, pkgdatadirlen);
+  memcpy (full_skeleton, pkgdatadir, pkgdatadirlen);
   full_skeleton[pkgdatadirlen] = '/';
   strcpy (full_skeleton + pkgdatadirlen + 1, m4sugar);
   full_m4sugar = xstrdup (full_skeleton);
diff --git a/src/parse-gram.y b/src/parse-gram.y
index 33b802e..1968e31 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -322,7 +322,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);
--
1.7.10.1.456.g16798d0


>From 799a5a0470ddac4671e90adc13bf285fef61a484 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Thu, 3 May 2012 23:01:05 +0200
Subject: [PATCH 2/2] maint: simplify parse-gram.y

* src/parse-gram.y (add_param): Use xmemdup in place of xmalloc+memcpy,
and (spotted by Akim Demaille) strspn in place of an open-coded loop.
---
 src/parse-gram.y | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/src/parse-gram.y b/src/parse-gram.y
index 1968e31..84c32d8 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -733,16 +733,8 @@ add_param (char const *type, char *decl, location loc)
     complain_at (loc, _("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);
+      size_t name_len = strspn (name_start, alphanum);
+      char *name = xmemdup (name_start, name_len + 1);
       name[name_len] = '\0';
       muscle_pair_list_grow (type, decl, name);
       free (name);
--
1.7.10.1.456.g16798d0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]