changeset 108:70069d4647a0 impl-bitvector

implement malloc error checking
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2015 17:48:36 +0900
parents c9f5ee891b5e
children 6401c708f5dd
files c/regexParser/bitVector.cc c/regexParser/createBitVectorList.cc c/regexParser/createRegexParser.cc
diffstat 3 files changed, 28 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/c/regexParser/bitVector.cc	Thu Nov 19 17:23:06 2015 +0900
+++ b/c/regexParser/bitVector.cc	Thu Nov 19 17:48:36 2015 +0900
@@ -10,7 +10,16 @@
 BitVectorPtr bitSet(int bitSetPosition) {
 
     BitVectorPtr bi = (BitVectorPtr)malloc(sizeof(BitVector));
+    if (bi == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
+
     bi->bitContainer = (unsigned long*)malloc(sizeof(unsigned long)*bi->arrayNum);
+    if (bi->bitContainer == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
 
     bi->arrayNum = (bitSetPosition + 1) / bitBlock;
     if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++;
--- a/c/regexParser/createBitVectorList.cc	Thu Nov 19 17:23:06 2015 +0900
+++ b/c/regexParser/createBitVectorList.cc	Thu Nov 19 17:48:36 2015 +0900
@@ -14,8 +14,18 @@
 
 BitVectorListPtr allocateBitVectorList() {
     BitVectorListPtr bvl = (BitVectorListPtr)malloc(sizeof(BitVectorList));
+    if (bvl == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
+
     bvl->self = bvl;
     bvl->bi = (BitVectorPtr)malloc(sizeof(BitVector));
+    if (bvl->bi == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
+
 
     return bvl;
 }
--- a/c/regexParser/createRegexParser.cc	Thu Nov 19 17:23:06 2015 +0900
+++ b/c/regexParser/createRegexParser.cc	Thu Nov 19 17:48:36 2015 +0900
@@ -17,6 +17,11 @@
  */
 NodePtr createNode(RegexInfoPtr ri,unsigned char character, NodePtr left, NodePtr right) {
     NodePtr n = (NodePtr)malloc(sizeof(Node));
+    if (n == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
+
     n->tokenType = ri->tokenType;
     n->self = n;
     n->Value.character = character;
@@ -41,6 +46,10 @@
 // <charClass> ::= '['<literal>'-'<literal>']'
 NodePtr charClass(RegexInfoPtr ri) {
     NodePtr n = (NodePtr)malloc(sizeof(Node));
+    if (n == NULL) {
+        fprintf(stderr, "Failed to allocate memory.\n");
+        exit(-1);
+    }
     while (ri->ptr[0] == '-') {
         ri->ptr++;
     }