Skip to content

Commit e3fdab3

Browse files
author
DenverM80
committed
update after incorporating autogen; fix memory leaks in new test
1 parent 623a5fa commit e3fdab3

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

src/ds3.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13234,8 +13234,8 @@ static ds3_error* _parse_top_level_ds3_list_bucket_result_response(const ds3_cli
1323413234
xmlNodePtr child_node;
1323513235
ds3_list_bucket_result_response* response;
1323613236
ds3_error* error = NULL;
13237-
GPtrArray* objects_array = g_ptr_array_new();
1323813237
GPtrArray* common_prefixes_array = g_ptr_array_new();
13238+
GPtrArray* objects_array = g_ptr_array_new();
1323913239

1324013240
error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListBucketResult");
1324113241
if (error != NULL) {
@@ -13283,13 +13283,12 @@ static ds3_error* _parse_top_level_ds3_list_bucket_result_response(const ds3_cli
1328313283

1328413284
}
1328513285

13286-
response->objects = (ds3_contents_response**)objects_array->pdata;
13287-
response->num_objects = objects_array->len;
13288-
g_ptr_array_free(objects_array, FALSE);
13289-
1329013286
response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
1329113287
response->num_common_prefixes = common_prefixes_array->len;
1329213288
g_ptr_array_free(common_prefixes_array, FALSE);
13289+
response->objects = (ds3_contents_response**)objects_array->pdata;
13290+
response->num_objects = objects_array->len;
13291+
g_ptr_array_free(objects_array, FALSE);
1329313292

1329413293
xmlFreeDoc(doc);
1329513294

@@ -13307,6 +13306,7 @@ static ds3_error* _parse_top_level_ds3_list_multi_part_uploads_result_response(c
1330713306
xmlNodePtr child_node;
1330813307
ds3_list_multi_part_uploads_result_response* response;
1330913308
ds3_error* error = NULL;
13309+
GPtrArray* common_prefixes_array = g_ptr_array_new();
1331013310
GPtrArray* uploads_array = g_ptr_array_new();
1331113311

1331213312
error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListMultipartUploadsResult");
@@ -13321,15 +13321,11 @@ static ds3_error* _parse_top_level_ds3_list_multi_part_uploads_result_response(c
1332113321
response->bucket = xml_get_string(doc, child_node);
1332213322
} else if (element_equal(child_node, "CommonPrefixes")) {
1332313323
xmlNodePtr loop_node;
13324-
GPtrArray* common_prefixes_array = g_ptr_array_new();
1332513324
int num_nodes = 0;
1332613325
for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
1332713326
ds3_str* common_prefixes = xml_get_string(doc, loop_node);
1332813327
g_ptr_array_add(common_prefixes_array, common_prefixes);
1332913328
}
13330-
response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13331-
response->num_common_prefixes = common_prefixes_array->len;
13332-
g_ptr_array_free(common_prefixes_array, FALSE);
1333313329
} else if (element_equal(child_node, "Delimiter")) {
1333413330
response->delimiter = xml_get_string(doc, child_node);
1333513331
} else if (element_equal(child_node, "KeyMarker")) {
@@ -13361,6 +13357,9 @@ static ds3_error* _parse_top_level_ds3_list_multi_part_uploads_result_response(c
1336113357

1336213358
}
1336313359

13360+
response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13361+
response->num_common_prefixes = common_prefixes_array->len;
13362+
g_ptr_array_free(common_prefixes_array, FALSE);
1336413363
response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
1336513364
response->num_uploads = uploads_array->len;
1336613365
g_ptr_array_free(uploads_array, FALSE);

test/test.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ void populate_with_objects(const ds3_client* client, const char* bucket_name) {
201201
}
202202

203203
void populate_with_multi_dir_objects(const ds3_client* client, const char* bucket_name) {
204-
ds3_str* job_id = populate_with_object_list_return_job(client, bucket_name, multi_dirs_object_list());
204+
ds3_str* job_id = populate_with_multi_dir_objects_return_job(client, bucket_name);
205205
ds3_str_free(job_id);
206206
}
207207

@@ -319,7 +319,17 @@ ds3_str* populate_with_object_list_return_job( const ds3_client* client,
319319
}
320320

321321
ds3_str* populate_with_objects_return_job(const ds3_client* client, const char* bucket_name) {
322-
return populate_with_object_list_return_job(client, bucket_name, default_object_list());
322+
ds3_bulk_object_list_response* obj_list = default_object_list();
323+
ds3_str* job_id = populate_with_object_list_return_job(client, bucket_name, obj_list);
324+
ds3_bulk_object_list_response_free(obj_list);
325+
return job_id;
326+
}
327+
328+
ds3_str* populate_with_multi_dir_objects_return_job(const ds3_client* client, const char* bucket_name) {
329+
ds3_bulk_object_list_response* obj_list = multi_dirs_object_list();
330+
ds3_str* job_id = populate_with_object_list_return_job(client, bucket_name, obj_list);
331+
ds3_bulk_object_list_response_free(obj_list);
332+
return job_id;
323333
}
324334

325335
bool contains_object(ds3_list_bucket_result_response* bucket_list, const char* key) {

test/test.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@ void clear_bucket(const ds3_client* client, const char* bucket_name);
2626

2727
void populate_with_objects(const ds3_client* client, const char* bucket_name);
2828
void populate_with_multi_dir_objects(const ds3_client* client, const char* bucket_name);
29+
2930
ds3_str* populate_with_object_list_return_job( const ds3_client* client,
3031
const char* bucket_name,
3132
ds3_bulk_object_list_response* object_list);
33+
3234
ds3_str* populate_with_objects_return_job(const ds3_client* client, const char* bucket_name);
35+
ds3_str* populate_with_multi_dir_objects_return_job(const ds3_client* client, const char* bucket_name);
3336
ds3_str* populate_with_empty_objects(const ds3_client* client, const char* bucket_name);
3437

3538
ds3_request* populate_bulk_return_request(const ds3_client* client, const char* bucket_name, ds3_bulk_object_list_response* obj_list);

0 commit comments

Comments
 (0)