Skip to content

Commit 348e4e2

Browse files
committed
MT#55283 change semantics of str_uri_encode_len
Return a `str` object with the output string for convenience. Also avoid an unneeded strlen(). Change-Id: I6de16391dd71433c605dcaa2c6b874daad449e61
1 parent 085189b commit 348e4e2

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

daemon/redis.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2310,33 +2310,33 @@ int redis_restore(struct redis *r, bool foreign, int db) {
23102310
#define JSON_ADD_LIST_STRING(f,...) do { \
23112311
int len = snprintf(tmp,sizeof(tmp), f, __VA_ARGS__); \
23122312
char enc[len * 3 + 1]; \
2313-
str_uri_encode_len(enc, tmp, len); \
2314-
parser->list_add_str_dup(inner, &STR_NC(enc)); \
2313+
str encstr = str_uri_encode_len(enc, tmp, len); \
2314+
parser->list_add_str_dup(inner, &encstr); \
23152315
} while (0)
23162316
#define JSON_SET_NSTRING(a,b,c,...) do { \
23172317
int len = snprintf(tmp,sizeof(tmp), c, __VA_ARGS__); \
23182318
char enc[len * 3 + 1]; \
2319-
str_uri_encode_len(enc, tmp, len); \
2319+
str encstr = str_uri_encode_len(enc, tmp, len); \
23202320
snprintf(tmp,sizeof(tmp), a,b); \
2321-
parser->dict_add_str_dup(inner, tmp, &STR_NC(enc)); \
2321+
parser->dict_add_str_dup(inner, tmp, &encstr); \
23222322
} while (0)
23232323
#define JSON_SET_NSTRING_CSTR(a,b,d) JSON_SET_NSTRING_LEN(a, b, strlen(d), d)
23242324
#define JSON_SET_NSTRING_LEN(a,b,l,d) do { \
23252325
char enc[l * 3 + 1]; \
2326-
str_uri_encode_len(enc, d, l); \
2326+
str encstr = str_uri_encode_len(enc, d, l); \
23272327
snprintf(tmp,sizeof(tmp), a,b); \
2328-
parser->dict_add_str_dup(inner, tmp, &STR_NC(enc)); \
2328+
parser->dict_add_str_dup(inner, tmp, &encstr); \
23292329
} while (0)
23302330
#define JSON_SET_SIMPLE(a,c,...) do { \
23312331
int len = snprintf(tmp,sizeof(tmp), c, __VA_ARGS__); \
23322332
char enc[len * 3 + 1]; \
2333-
str_uri_encode_len(enc, tmp, len); \
2334-
parser->dict_add_str_dup(inner, a, &STR_NC(enc)); \
2333+
str encstr = str_uri_encode_len(enc, tmp, len); \
2334+
parser->dict_add_str_dup(inner, a, &encstr); \
23352335
} while (0)
23362336
#define JSON_SET_SIMPLE_LEN(a,l,d) do { \
23372337
char enc[l * 3 + 1]; \
2338-
str_uri_encode_len(enc, d, l); \
2339-
parser->dict_add_str_dup(inner, a, &STR_NC(enc)); \
2338+
str encstr = str_uri_encode_len(enc, d, l); \
2339+
parser->dict_add_str_dup(inner, a, &encstr); \
23402340
} while (0)
23412341
#define JSON_SET_SIMPLE_CSTR(a,d) parser->dict_add_str_dup(inner, a, &STR(d))
23422342
#define JSON_SET_SIMPLE_STR(a,d) parser->dict_add_str_dup(inner, a, d)

lib/str.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ char *rand_hex_str(char *rand_str, int num_bytes) {
6565

6666

6767
static const char *hex_chars = "0123456789abcdef";
68-
size_t str_uri_encode_len(char *out, const char *in, size_t len) {
68+
str str_uri_encode_len(char *out, const char *in, size_t len) {
6969
const char *end = in + len;
7070
char *ori_out = out;
7171

@@ -82,7 +82,7 @@ size_t str_uri_encode_len(char *out, const char *in, size_t len) {
8282
}
8383

8484
*out = 0;
85-
return out - ori_out;
85+
return STR_LEN(ori_out, out - ori_out);
8686
}
8787

8888
str *str_uri_decode_len(const char *in, size_t in_len) {

lib/str.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ INLINE str *str_slice_dup(const str *);
182182
INLINE void str_slice_free(str *);
183183

184184
/* saves "in" into "out" pseudo-URI encoded. "out" point to a buffer with sufficient length. returns length */
185-
size_t str_uri_encode_len(char *out, const char *in, size_t in_len);
185+
str str_uri_encode_len(char *out, const char *in, size_t in_len);
186186
/* reverse of the above. returns newly allocated str + buffer as per str_alloc (must be free'd) */
187187
str *str_uri_decode_len(const char *in, size_t in_len);
188188

0 commit comments

Comments
 (0)