Download raw body.
speed up tree-entry parsing
On Wed, May 18, 2022 at 05:12:47PM +0200, Omar Polo wrote:
> > space = memchr(buf, ' ', *elen);
> > - if (space == NULL || space <= buf) {
> > - err = got_error(GOT_ERR_BAD_OBJ_DATA);
> > - free(*pte);
> > - *pte = NULL;
> > - return err;
> > - }
> > - (*pte)->mode = 0;
>
> this was the same in the previous code too, but why check for space <=
> buf?
Yeah, it surprised me as well.
> > + if (space == NULL || space <= buf)
>
> `space' is either NULL or somewhere between [buf, buf+(*elen)), the <=
> is intended just to make sure buf doesn't start with a space right?
Yes, it is just in order to cover == so when the current position
is a space we trigger a parsing error.
The check is not incorrect but could be changed to == for clarity.
I didn't want to change the check as part of this patch though.
> > +static int
> > +pte_cmp(const void *pa, const void *pb)
> > +{
> > + const struct got_parsed_tree_entry *a, *b;
> > +
> > + a = (const struct got_parsed_tree_entry *)pa;
> > + b = (const struct got_parsed_tree_entry *)pb;
>
> are these cast needed? It's just a matter of style, I'm just asking to
> be sure so future patches will be coherent with the rest of the code. I
> have written some code in got_patch IIRC which uses the implicit cast
> from void *
Yes, we can rely on implicit cast from void instead.
Casts should only be needed if the array elements are themselves pointers.
I'll tweak this either before commit, or as a follow-up.
speed up tree-entry parsing