3 ms·
Or even: if (len == 0) return null_buffer_singleton; /* special shared representation for 0: */
by kazinator 3mo ago
Or even:
if (len == 0)
return null_buffer_singleton; /* special shared representation for 0: */
- repiret 3mo agoBecause then the caller needs to treat it differently from non-empty buffers.
- kazinator 3mo agoNo, it doesn't. It calls: void buffer_free(void *buf) { if (buf != null_buffer_singleton) free(buf); }
- Joker_vD 3mo ago...which treats it differently from non-empty buffers :) But frankly, having a 1-byte buffer, pointer to which can serve as a sentinel value à la NULL (but dereferenceable!), and which you can pass to free() without it being deallocated is indeed rather useful.