cpp: sbuffer: check initial buffer size != 0

This commit is contained in:
frsyuki 2010-09-26 11:36:57 +09:00
parent 1be1927a1f
commit e8abcc1765
2 changed files with 9 additions and 5 deletions

View File

@ -38,7 +38,7 @@ test -f ChangeLog || touch ChangeLog
test -f NEWS || touch NEWS
test -f README || cp -f README.md README
if ! ./preprocess; then
if test ! ./preprocess; then
exit 1
fi

View File

@ -28,10 +28,14 @@ class sbuffer : public msgpack_sbuffer {
public:
sbuffer(size_t initsz = MSGPACK_SBUFFER_INIT_SIZE)
{
if(initsz == 0) {
base::data = NULL;
} else {
base::data = (char*)::malloc(initsz);
if(!base::data) {
throw std::bad_alloc();
}
}
base::size = 0;
base::alloc = initsz;
@ -80,7 +84,7 @@ public:
private:
void expand_buffer(size_t len)
{
size_t nsize = (base::alloc) ?
size_t nsize = (base::alloc > 0) ?
base::alloc * 2 : MSGPACK_SBUFFER_INIT_SIZE;
while(nsize < base::size + len) { nsize *= 2; }