Re: [PATCH setxkbmap; 3rd try] Consistent handling of memory allocation errors.

2011-02-27 Thread Peter Hutterer
On Sat, Feb 26, 2011 at 02:32:29AM +0300, Van de Bugger wrote:
 Macro `OOM' (Out of memory) introduced for checking and reporting
 memory allocation errors. The same macro is used in all the cases.
 
 One check was missed in original source; fixed.
 
 Changes after patch review:
 
 1. `OOM' macro uses `do ... while (0)'.
 2. `exit(-1)', not `abort()'.
 
 Signed-off-by: Van de Bugger van.de.bug...@gmail.com
 ---

btw, if you put the changelog after the ---, git will skip it when merging
and the commit message will be cleaner. You can also put other comments here
that you don't want in the commit. so your commit message would end up
being:

one line subject

multi-line 
comment

Signed-off-by: 
---
Changes to v2: 
- blah
- foobar

 setxkbmap.c |   27 +--
 1 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/setxkbmap.c b/setxkbmap.c
index f7dbade..04c3fdf 100644
[...]

either way - merged this patch, thank you!

Cheers,
  Peter

  setxkbmap.c |   27 +--
  1 files changed, 9 insertions(+), 18 deletions(-)
 
 diff --git a/setxkbmap.c b/setxkbmap.c
 index f7dbade..04c3fdf 100644
 --- a/setxkbmap.c
 +++ b/setxkbmap.c
 @@ -170,6 +170,8 @@ static int deviceSpec = XkbUseCoreKbd;
  #define ERR2(s,a,b) fprintf(stderr,s,a,b)
  #define ERR3(s,a,b,c)   fprintf(stderr,s,a,b,c)
  
 +#define OOM(ptr)do { if ((ptr) == NULL) { ERR(Out of memory.\n); 
 exit(-1); } } while (0)
 +
  /******/
  
  Bool addToList(list_t *list, char *newVal);
 @@ -215,19 +217,16 @@ addToList(list_t *list, char *newVal)
  list-num = 0;
  list-sz = 4;
  list-item = (char **) calloc(list-sz, sizeof(char *));
 +OOM(list-item);
  }
  else if (list-num = list-sz)
  {
  list-sz *= 2;
  list-item = (char **) realloc(list-item, (list-sz) * sizeof(char 
 *));
 -}
 -if (!list-item)
 -{
 -ERR(Internal Error! Allocation failure in add to list!\n);
 -ERR(Exiting.\n);
 -exit(-1);
 +OOM(list-item);
  }
  list-item[list-num] = strdup(newVal);
 +OOM(list-item[list-num]);
  list-num += 1;
  return True;
  }
 @@ -663,8 +662,8 @@ addStringToOptions(char *opt_str, list_t *opts)
  char *tmp, *str, *next;
  Bool ok = True;
  
 -if ((str = strdup(opt_str)) == NULL)
 -return False;
 +str = strdup(opt_str);
 +OOM(str);
  for (tmp = str; (tmp  *tmp != '\0')  ok; tmp = next)
  {
  next = strchr(str, ',');
 @@ -700,21 +699,13 @@ stringFromOptions(char *orig, list_t *newOpts)
  if (orig)
  {
  orig = (char *) realloc(orig, len);
 -if (!orig)
 -{
 -ERR(OOM in stringFromOptions\n);
 -return NULL;
 -}
 +OOM(orig);
  nOut = 1;
  }
  else
  {
  orig = (char *) calloc(len, 1);
 -if (!orig)
 -{
 -ERR(OOM in stringFromOptions\n);
 -return NULL;
 -}
 +OOM(orig);
  nOut = 0;
  }
  for (i = 0; i  newOpts-num; i++)
 -- 
 1.7.4
 
 
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


[PATCH setxkbmap; 3rd try] Consistent handling of memory allocation errors.

2011-02-25 Thread Van de Bugger
Macro `OOM' (Out of memory) introduced for checking and reporting
memory allocation errors. The same macro is used in all the cases.

One check was missed in original source; fixed.

Changes after patch review:

1. `OOM' macro uses `do ... while (0)'.
2. `exit(-1)', not `abort()'.

Signed-off-by: Van de Bugger van.de.bug...@gmail.com
---
 setxkbmap.c |   27 +--
 1 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/setxkbmap.c b/setxkbmap.c
index f7dbade..04c3fdf 100644
--- a/setxkbmap.c
+++ b/setxkbmap.c
@@ -170,6 +170,8 @@ static int deviceSpec = XkbUseCoreKbd;
 #define ERR2(s,a,b) fprintf(stderr,s,a,b)
 #define ERR3(s,a,b,c)   fprintf(stderr,s,a,b,c)
 
+#define OOM(ptr)do { if ((ptr) == NULL) { ERR(Out of memory.\n); 
exit(-1); } } while (0)
+
 /******/
 
 Bool addToList(list_t *list, char *newVal);
@@ -215,19 +217,16 @@ addToList(list_t *list, char *newVal)
 list-num = 0;
 list-sz = 4;
 list-item = (char **) calloc(list-sz, sizeof(char *));
+OOM(list-item);
 }
 else if (list-num = list-sz)
 {
 list-sz *= 2;
 list-item = (char **) realloc(list-item, (list-sz) * sizeof(char 
*));
-}
-if (!list-item)
-{
-ERR(Internal Error! Allocation failure in add to list!\n);
-ERR(Exiting.\n);
-exit(-1);
+OOM(list-item);
 }
 list-item[list-num] = strdup(newVal);
+OOM(list-item[list-num]);
 list-num += 1;
 return True;
 }
@@ -663,8 +662,8 @@ addStringToOptions(char *opt_str, list_t *opts)
 char *tmp, *str, *next;
 Bool ok = True;
 
-if ((str = strdup(opt_str)) == NULL)
-return False;
+str = strdup(opt_str);
+OOM(str);
 for (tmp = str; (tmp  *tmp != '\0')  ok; tmp = next)
 {
 next = strchr(str, ',');
@@ -700,21 +699,13 @@ stringFromOptions(char *orig, list_t *newOpts)
 if (orig)
 {
 orig = (char *) realloc(orig, len);
-if (!orig)
-{
-ERR(OOM in stringFromOptions\n);
-return NULL;
-}
+OOM(orig);
 nOut = 1;
 }
 else
 {
 orig = (char *) calloc(len, 1);
-if (!orig)
-{
-ERR(OOM in stringFromOptions\n);
-return NULL;
-}
+OOM(orig);
 nOut = 0;
 }
 for (i = 0; i  newOpts-num; i++)
-- 
1.7.4


___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel