| 3832 | } |
| 3833 | |
| 3834 | void moduleParseCallReply_Array(RedisModuleCallReply *reply) { |
| 3835 | char *proto = reply->proto; |
| 3836 | char *p = strchr(proto+1,'\r'); |
| 3837 | long long arraylen, j; |
| 3838 | |
| 3839 | string2ll(proto+1,p-proto-1,&arraylen); |
| 3840 | p += 2; |
| 3841 | |
| 3842 | if (arraylen == -1) { |
| 3843 | reply->protolen = p-proto; |
| 3844 | reply->type = REDISMODULE_REPLY_NULL; |
| 3845 | return; |
| 3846 | } |
| 3847 | |
| 3848 | reply->val.array = zmalloc(sizeof(RedisModuleCallReply)*arraylen); |
| 3849 | reply->len = arraylen; |
| 3850 | for (j = 0; j < arraylen; j++) { |
| 3851 | RedisModuleCallReply *ele = reply->val.array+j; |
| 3852 | ele->flags = REDISMODULE_REPLYFLAG_NESTED | |
| 3853 | REDISMODULE_REPLYFLAG_TOPARSE; |
| 3854 | ele->proto = p; |
| 3855 | ele->ctx = reply->ctx; |
| 3856 | moduleParseCallReply(ele); |
| 3857 | p += ele->protolen; |
| 3858 | } |
| 3859 | reply->protolen = p-proto; |
| 3860 | reply->type = REDISMODULE_REPLY_ARRAY; |
| 3861 | } |
| 3862 | |
| 3863 | /* Recursive free reply function. */ |
| 3864 | void moduleFreeCallReplyRec(RedisModuleCallReply *reply, int freenested){ |
no test coverage detected