Modules: handle NULL replies more gracefully.

After all crashing at every API misuse makes everybody's life more
complex.
This commit is contained in:
antirez 2016-08-03 18:09:36 +02:00
parent a81a92ca2c
commit 13f18d2b17

View File

@ -762,6 +762,11 @@ void RM_RetainString(RedisModuleCtx *ctx, RedisModuleString *str) {
* and length of the string. The returned pointer and length should only
* be used for read only accesses and never modified. */
const char *RM_StringPtrLen(const RedisModuleString *str, size_t *len) {
if (str == NULL) {
const char *errmsg = "(NULL string reply referenced in module)";
if (len) *len = strlen(errmsg);
return errmsg;
}
if (len) *len = sdslen(str->ptr);
return str->ptr;
}
@ -2203,6 +2208,7 @@ void RM_FreeCallReply(RedisModuleCallReply *reply) {
/* Return the reply type. */
int RM_CallReplyType(RedisModuleCallReply *reply) {
if (!reply) return REDISMODULE_REPLY_UNKNOWN;
return reply->type;
}