curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: dynbuf: PR #5300

From: Patrick Monnerat via curl-library <curl-library_at_cool.haxx.se>
Date: Fri, 1 May 2020 19:03:50 +0200

On 4/30/20 3:10 PM, Daniel Stenberg via curl-library wrote:
> Hi team,
>
> In PR 5300 I'm introducing a library-wide change that I wanted to make
> you all aware of!
>
>
> # Feedback?

I think there is also the sequence at
https://github.com/curl/curl/blob/master/packages/OS400/ccsidcurl.c#L855
that could be transformed, although array elements are not characters.
Other realloc calls in OS400 code only shrink buffers to spare memory.

Suggestions:

- Implement auto shrink when shortening data under an arbitrary
watermark, for example 20% of the allocated memory.

- A function to grow allocation without initializing it: something like
(conceptually) accepting Curl_dyn_addn(&dbuf, NULL, size), maybe
returning a pointer to the extended memory block. The motivation is: in
some circonstances, OS400 does not like moving pointers as characters;
if the dynamic array element contains a pointer, it may lose its
addressing capability after byte to byte copy, thus a direct access to
the allocated block is required for proper initialisation. This would
also be useful to allocate a buffer when the final data size is unknown
(before a read, for example).

- Curl_dyn_head(): opposite of Curl_dyn_tail(), keeping the leading
bytes. Although very simple to perform without such a function, it'll
add implementation details abstraction.

- In debug mode, store DYNINIT also after the data and check it: this
may detect buffer overflows. This could also be done before the data,
but beware of alignement.

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2020-05-01