• Paul Sokolovsky's avatar
    Add "buffer management" and "shrink" API calls to vstr. · 5d2499c6
    Paul Sokolovsky authored
    vstr is initially intended to deal with arbitrary-length strings. By
    providing a bit lower-level API calls, it will be also useful to deal
    with arbitrary-length I/O buffers (the difference from strings is that
    buffers are filled from "outside", via I/O).
    Another issue, especially aggravated by I/O buffer use, is alloc size
    vs actual size length. If allocated 1Mb for buffer, but actually
    read 1 byte, we don't want to keep rest of 1Mb be locked by this I/O
    result, but rather return it to heap ASAP ("shrink" buffer before passing
    it to qstr_from_str_take()).