[buffer] Fail in _create() if we cannot pre-allocate the requested size
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 2 May 2011 23:35:05 +0000 (19:35 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 May 2011 23:35:05 +0000 (19:35 -0400)
src/hb-buffer.cc

index 1e49c7a..4009b12 100644 (file)
@@ -142,11 +142,13 @@ hb_buffer_create (unsigned int pre_alloc_size)
   if (!(buffer = hb_object_create<hb_buffer_t> ()))
     return &_hb_buffer_nil;
 
-  if (pre_alloc_size)
-    _hb_buffer_ensure (buffer, pre_alloc_size);
-
   hb_buffer_reset (buffer);
 
+  if (pre_alloc_size && !_hb_buffer_ensure (buffer, pre_alloc_size)) {
+    hb_buffer_destroy (buffer);
+    return &_hb_buffer_nil;
+  }
+
   return buffer;
 }