| 3920 | } |
| 3921 | |
| 3922 | void moduleParseCallReply_Array(RedisModuleCallReply *reply) { |
| 3923 | char *proto = reply->proto; |
| 3924 | char *p = strchr(proto+1,'\r'); |
| 3925 | long long arraylen, j; |
| 3926 | |
| 3927 | string2ll(proto+1,p-proto-1,&arraylen); |
| 3928 | p += 2; |
| 3929 | |
| 3930 | if (arraylen == -1) { |
| 3931 | reply->protolen = p-proto; |
| 3932 | reply->type = REDISMODULE_REPLY_NULL; |
| 3933 | return; |
| 3934 | } |
| 3935 | |
| 3936 | reply->val.array = (RedisModuleCallReply*)zmalloc(sizeof(RedisModuleCallReply)*arraylen, MALLOC_LOCAL); |
| 3937 | reply->len = arraylen; |
| 3938 | for (j = 0; j < arraylen; j++) { |
| 3939 | RedisModuleCallReply *ele = reply->val.array+j; |
| 3940 | ele->flags = REDISMODULE_REPLYFLAG_NESTED | |
| 3941 | REDISMODULE_REPLYFLAG_TOPARSE; |
| 3942 | ele->proto = p; |
| 3943 | ele->ctx = reply->ctx; |
| 3944 | moduleParseCallReply(ele); |
| 3945 | p += ele->protolen; |
| 3946 | } |
| 3947 | reply->protolen = p-proto; |
| 3948 | reply->type = REDISMODULE_REPLY_ARRAY; |
| 3949 | } |
| 3950 | |
| 3951 | /* Recursive free reply function. */ |
| 3952 | void moduleFreeCallReplyRec(RedisModuleCallReply *reply, int freenested){ |
no test coverage detected