@@ -263,14 +263,18 @@ pub const DB = struct {
263263 return ri ;
264264 }
265265
266- pub fn liveFiles (self : * const Self , allocator : Allocator ) Allocator.Error ! std. ArrayList ( LiveFile ) {
266+ pub fn liveFiles (self : * const Self , allocator : Allocator ) Allocator.Error ! [] const LiveFile {
267267 const files = rdb .rocksdb_livefiles (self .db ).? ;
268+ defer rdb .rocksdb_livefiles_destroy (files );
268269 const num_files : usize = @intCast (rdb .rocksdb_livefiles_count (files ));
269- var livefiles = std .ArrayList (LiveFile ).init (allocator );
270+
271+ var livefiles : std .ArrayList (LiveFile ) = .empty ;
272+ defer livefiles .deinit (allocator );
273+
270274 var key_size : usize = 0 ;
271275 for (0.. num_files ) | i | {
272276 const file_num : c_int = @intCast (i );
273- try livefiles .append (.{
277+ try livefiles .append (allocator , .{
274278 .allocator = allocator ,
275279 .column_family_name = try copy (allocator , rdb .rocksdb_livefiles_column_family_name (files , file_num )),
276280 .name = try copy (allocator , rdb .rocksdb_livefiles_name (files , file_num )),
@@ -282,8 +286,8 @@ pub const DB = struct {
282286 .num_deletions = rdb .rocksdb_livefiles_deletions (files , file_num ),
283287 });
284288 }
285- rdb . rocksdb_livefiles_destroy ( files );
286- return livefiles ;
289+
290+ return try livefiles . toOwnedSlice ( allocator ) ;
287291 }
288292
289293 pub fn propertyValueCf (
@@ -553,15 +557,17 @@ test DB {
553557 var err_str : ? Data = null ;
554558 defer if (err_str ) | e | e .deinit ();
555559 runTest (& err_str ) catch | e | {
556- std .debug .print ("{}: {?}\n " , .{ e , err_str });
560+ std .debug .print ("{}: {?f }\n " , .{ e , err_str });
557561 return e ;
558562 };
559563}
560564
561565fn runTest (err_str : * ? Data ) ! void {
566+ const allocator = std .testing .allocator ;
567+
562568 {
563569 var db , const families = try DB .open (
564- std . testing . allocator ,
570+ allocator ,
565571 "test-state" ,
566572 .{
567573 .create_if_missing = true ,
@@ -575,7 +581,7 @@ fn runTest(err_str: *?Data) !void {
575581 err_str ,
576582 );
577583 defer db .deinit ();
578- defer std . testing . allocator .free (families );
584+ defer allocator .free (families );
579585 const a_family = families [1 ].handle ;
580586
581587 _ = try db .put (a_family , "hello" , "world" , err_str );
@@ -601,7 +607,7 @@ fn runTest(err_str: *?Data) !void {
601607 }
602608
603609 var db , const families = try DB .open (
604- std . testing . allocator ,
610+ allocator ,
605611 "test-state" ,
606612 .{
607613 .create_if_missing = true ,
@@ -615,9 +621,12 @@ fn runTest(err_str: *?Data) !void {
615621 err_str ,
616622 );
617623 defer db .deinit ();
618- defer std .testing .allocator .free (families );
619- const lfs = try db .liveFiles (std .testing .allocator );
620- defer lfs .deinit ();
621- defer for (lfs .items ) | lf | lf .deinit ();
622- try std .testing .expect (std .mem .eql (u8 , "another" , lfs .items [0 ].column_family_name ));
624+ defer allocator .free (families );
625+
626+ const lfs = try db .liveFiles (allocator );
627+ defer {
628+ for (lfs ) | lf | lf .deinit ();
629+ allocator .free (lfs );
630+ }
631+ try std .testing .expect (std .mem .eql (u8 , "another" , lfs [0 ].column_family_name ));
623632}
0 commit comments