@@ -32,12 +32,13 @@ class ArrayBuilder;
3232// Initially looked at doing this with vtables, but shared pointers makes it
3333// difficult
3434
35- #define BUILDER_CASE (ENUM, BuilderType ) \
36- case TypeEnum::ENUM : \
37- *out = static_cast <ArrayBuilder*>(new BuilderType(type)); \
35+ #define BUILDER_CASE (ENUM, BuilderType ) \
36+ case TypeEnum::ENUM : \
37+ *out = static_cast <ArrayBuilder*>(new BuilderType(pool, type)); \
3838 return Status::OK ();
3939
40- Status make_builder (const TypePtr& type, ArrayBuilder** out) {
40+ Status make_builder (MemoryPool* pool, const TypePtr& type,
41+ ArrayBuilder** out) {
4142 switch (type->type ) {
4243 BUILDER_CASE (UINT8 , UInt8Builder);
4344 BUILDER_CASE (INT8 , Int8Builder);
@@ -59,10 +60,10 @@ Status make_builder(const TypePtr& type, ArrayBuilder** out) {
5960 {
6061 ListType* list_type = static_cast <ListType*>(type.get ());
6162 ArrayBuilder* value_builder;
62- RETURN_NOT_OK (make_builder (list_type->value_type , &value_builder));
63+ RETURN_NOT_OK (make_builder (pool, list_type->value_type , &value_builder));
6364
6465 // The ListBuilder takes ownership of the value_builder
65- ListBuilder* builder = new ListBuilder (type, value_builder);
66+ ListBuilder* builder = new ListBuilder (pool, type, value_builder);
6667 *out = static_cast <ArrayBuilder*>(builder);
6768 return Status::OK ();
6869 }
0 commit comments