diff options
author | Johannes Löthberg <johannes@kyriasis.com> | 2015-01-18 15:41:09 +0100 |
---|---|---|
committer | Johannes Löthberg <johannes@kyriasis.com> | 2015-01-19 00:25:40 +0100 |
commit | 459d2cb217e1af053f08d7e30a92b1b6bf61a90a (patch) | |
tree | 9a2fb690e0501f761ddfd30c5081313e94804e28 | |
parent | a3d3b21dbdad912fcca74ba2263d007c764b9ea3 (diff) | |
download | sds-459d2cb217e1af053f08d7e30a92b1b6bf61a90a.tar.xz |
sdsrange: change start/end args to ptrdiff_t
An sds string can hold a much bigger value than an int can hold, but
since size_t is unsigned it can’t be used for this function. Using
ptrdiff_t limits the function to work on roughly 1 Exabyte long strings,
but if you need to work with longer ones you probably will have your
custom string library already.
-rw-r--r-- | src/sds.c | 3 | ||||
-rw-r--r-- | src/sds.h | 2 |
2 files changed, 3 insertions, 2 deletions
@@ -27,6 +27,7 @@ #include <assert.h> #include <ctype.h> +#include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -388,7 +389,7 @@ void sdstrim(sds s, const char *cset) { * s = sdsnew("Hello World"); * sdsrange(s,1,-1); => "ello World" */ -void sdsrange(sds s, int start, int end) { +void sdsrange(sds s, ptrdiff_t start, ptrdiff_t end) { struct sdshdr *sh = sdsheader(s); size_t newlen, len = sdslen(s); @@ -77,7 +77,7 @@ sds sdscatprintf(sds s, const char *fmt, ...); #endif void sdstrim(sds s, const char *cset); -void sdsrange(sds s, int start, int end); +void sdsrange(sds s, ptrdiff_t start, ptrdiff_t end); void sdsupdatelen(sds s); void sdsclear(sds s); int sdscmp(const sds s1, const sds s2); |