def stringbuilder_grow(ll_builder, needed): allocated = ll_builder.allocated if allocated < GROW_FAST_UNTIL: new_allocated = allocated << 1 else: extra_size = allocated >> 2 try: new_allocated = ovfcheck(allocated + extra_size) except OverflowError: raise MemoryError try: new_allocated = ovfcheck(new_allocated + needed) except OverflowError: raise MemoryError ll_builder.buf = rgc.resize_buffer(ll_builder.buf, ll_builder.used, new_allocated) ll_builder.allocated = new_allocated
def f(): ptr = rgc.resizable_buffer_of_shape(STR, 1) ptr.chars[0] = 'a' ptr = rgc.resize_buffer(ptr, 1, 2) ptr.chars[1] = 'b' return len(hlstr(rgc.finish_building_buffer(ptr, 2)))