Mercurial > hg > Members > masakoha > testcode
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++; }