William Duclot <william.duclot@xxxxxxxxxxxxxxxxxxxxxxx> writes: >> Perhaps I made it clearer by using a more exaggerated example e.g. a >> typical expected buffer size of 128 bytes, but the third line of >> 1000 line input file was an anomaly that is 200k bytes long. I do >> not want to keep that 200k bytes after finishing to process that >> third line while using its initial 80 bytes for the remaining 977 >> lines. > > "its initial 128 bytes", rather than "its initial 80 bytes", no? Either way would work, but 80 is closer to what I had in mind, as the set-up of the example is "I know 99% of my input will fit within 80, but I'll allocate 128 to avoid realloc cost when there are rare ones that bust 80. I do not want to die only because there is an occasional oddball that needs 200". > The "fixed" feature was aimed to allow the users to use strbuf with > strings that they doesn't own themselves (a function parameter for > example). From Michael example in the original mail: > > void f(char *path_buf, size_t path_buf_len) > { > struct strbuf path; > strbuf_wrap_fixed(&path, path_buf, > strlen(path_buf), > path_buf_len); > ... > /* > * no strbuf_release() required here, but if called it > * is a NOOP > */ > } Think what does the "..." part would do using the "path" strbuf. If 'f()' is meant to take the "dying is perfectly fine if the data we have to process exceeds the area we were given even by one byte" attitude, then the "capped to the same length as allocated" is perfectly fine, but if 'f()' cannot afford to die() and instead has to signal an error condition to its caller, then this function has to check the length currently in use (i.e. path.len) and how much more memory it can still use, before making each call to strbuf_*() functions, no? If we were to add "fixed" feature, we'd want to see it to help a function like f() that cannot afford to die() and does not want to malloc()/realloc(). I do not think what was in this series was it. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html