[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bitset: check memory allocation
From: |
Akim Demaille |
Subject: |
bitset: check memory allocation |
Date: |
Thu, 5 Sep 2019 21:59:14 +0200 |
Hi!
Ok to push?
commit 1fddc3eddd988829cd2b5b74dc3fab58a3093af8
Author: Akim Demaille <address@hidden>
Date: Thu Sep 5 11:36:39 2019 +0200
bitset: check memory allocation
Reported by 江 祖铭 (Zu-Ming Jiang).
https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html
* lib/bitset/table.c (tbitset_resize): Use xrealloc instead of
realloc.
* lib/bitset/vector.c (vbitset_resize): Likewise.
diff --git a/lib/bitset/table.c b/lib/bitset/table.c
index 07184d657..01bc65167 100644
--- a/lib/bitset/table.c
+++ b/lib/bitset/table.c
@@ -25,6 +25,7 @@
#include <string.h>
#include "obstack.h"
+#include "xalloc.h"
/* This file implements expandable bitsets. These bitsets can be of
arbitrary length and are more efficient than arrays of bits for
@@ -142,7 +143,7 @@ tbitset_resize (bitset src, bitset_bindex n_bits)
bitset_windex size = oldsize == 0 ? newsize : newsize + newsize / 4;
EBITSET_ELTS (src)
- = realloc (EBITSET_ELTS (src), size * sizeof (tbitset_elt *));
+ = xrealloc (EBITSET_ELTS (src), size * sizeof (tbitset_elt *));
EBITSET_ASIZE (src) = size;
}
@@ -156,7 +157,7 @@ tbitset_resize (bitset src, bitset_bindex n_bits)
if ((oldsize - newsize) >= oldsize / 2)
{
EBITSET_ELTS (src)
- = realloc (EBITSET_ELTS (src), newsize * sizeof (tbitset_elt *));
+ = xrealloc (EBITSET_ELTS (src), newsize * sizeof (tbitset_elt *));
EBITSET_ASIZE (src) = newsize;
}
diff --git a/lib/bitset/vector.c b/lib/bitset/vector.c
index 54f148d56..11960bbd0 100644
--- a/lib/bitset/vector.c
+++ b/lib/bitset/vector.c
@@ -24,6 +24,8 @@
#include <stdlib.h>
#include <string.h>
+#include "xalloc.h"
+
/* This file implements variable size bitsets stored as a variable
length array of words. Any unused bits in the last word must be
zero.
@@ -74,7 +76,7 @@ vbitset_resize (bitset src, bitset_bindex n_bits)
bitset_windex size = oldsize == 0 ? newsize : newsize + newsize / 4;
VBITSET_WORDS (src)
- = realloc (VBITSET_WORDS (src), size * sizeof (bitset_word));
+ = xrealloc (VBITSET_WORDS (src), size * sizeof (bitset_word));
VBITSET_ASIZE (src) = size;
}
@@ -89,7 +91,7 @@ vbitset_resize (bitset src, bitset_bindex n_bits)
if ((oldsize - newsize) >= oldsize / 2)
{
VBITSET_WORDS (src)
- = realloc (VBITSET_WORDS (src), newsize * sizeof (bitset_word));
+ = xrealloc (VBITSET_WORDS (src), newsize * sizeof (bitset_word));
VBITSET_ASIZE (src) = newsize;
}
- bitset: check memory allocation,
Akim Demaille <=