Re: [PATCH GSoC v2 4/6] fetch-object-info: parse type from server response
Junio C Hamano <[email protected]> Fri, 31 Jul 2026 22:04:47 -0700
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Pablo Sabater <[email protected]> writes: > @@ -104,8 +105,13 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar > for (size_t j = 0; j < args->oids->nr; j++) > object_info_data[j].sizep = > xcalloc(1, sizeof(*object_info_data[j].sizep)); > + } else if (!strcmp(reader->line, "type")) { > + type_index = (int)i; > + for (size_t j = 0; j < args->oids->nr; j++) > + object_info_data[j].typep = > + xcalloc(1, sizeof(*object_info_data[j].typep)); Do object_info_data[j].typep and object_info_data[k].typep need to be independently freeable? Separate allocations by calling calloc args->oids->nr times would allow that, but if there is no such need, nr contiguous allocation of them, enum object_type *types; *types = xcalloc(args->oids->nr, sizeof(*types)); for (size_t j = 0; j < args->oids->nr; j++) object_info_data[j].typep = &types[j]; would be simpler to manage and easier to get rid of once you are done. > } else { > - BUG("only size is supported"); > + BUG("unexpected object-info option: %s", reader->line); > } > } > > @@ -151,6 +157,10 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar > object_info_values.items[0].string, > object_info_values.items[size_index + 1].string); > > + if (type_index >= 0) > + *object_info_data[i].typep = > + type_from_string(object_info_values.items[type_index + 1].string); > + > string_list_clear(&object_info_values, 0); > } > check_stateless_delimiter(stateless_rpc, reader, "stateless delimiter expected");