mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
Add sdsnative()
Use the existing memory space for an SDS to convert it to a regular character buffer so we don't need to allocate duplicate space just to extract a usable buffer for native operations.
This commit is contained in:
parent
c6bf20c2a7
commit
e1619772db
11
src/sds.c
11
src/sds.c
@ -88,6 +88,17 @@ void sdsfree(sds s) {
|
||||
zfree(s-sizeof(struct sdshdr));
|
||||
}
|
||||
|
||||
/* Remove sds header so we can use buffer as malloc'd byte array.
|
||||
* Returns the contents of 's' usable as a full malloc'd C string. */
|
||||
char *sdsnative(sds s) {
|
||||
if (!s) return NULL;
|
||||
|
||||
size_t len = sdslen(s);
|
||||
char *base = s-sizeof(struct sdshdr);
|
||||
memmove(base, s, len);
|
||||
return zrealloc(base, len);
|
||||
}
|
||||
|
||||
/* Set the sds string length to the length as obtained with strlen(), so
|
||||
* considering as content only up to the first null term character.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user