[Top][All Lists]
[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
- nuke strncpy, Jim Meyering, 2012/05/03
- [PATCH 1/3] maint: s/strncpy/memcpy/, when equivalent, Jim Meyering, 2012/05/03
- [PATCH 3/3] maint: regen src/parse-gram.[ch], Jim Meyering, 2012/05/03
- [PATCH 2/3] maint: simplify parse-gram.y, Jim Meyering, 2012/05/03
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Akim Demaille, 2012/05/04
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Jim Meyering, 2012/05/04
- Re: [PATCH 2/3] maint: simplify parse-gram.y,
Jim Meyering <=
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Akim Demaille, 2012/05/06
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Jim Meyering, 2012/05/06
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Akim Demaille, 2012/05/06
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Jim Meyering, 2012/05/06
- Re: [PATCH 2/3] maint: simplify parse-gram.y, Akim Demaille, 2012/05/09