From 879b31058065537d2e30bd74f71403800dd19cf4 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 18 May 2013 00:27:03 -0400 Subject: Fix Windows build --- modules/m_redis.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'modules/m_redis.cpp') diff --git a/modules/m_redis.cpp b/modules/m_redis.cpp index a593b4cf8..ce3093d50 100644 --- a/modules/m_redis.cpp +++ b/modules/m_redis.cpp @@ -11,6 +11,8 @@ #include "module.h" #include "modules/redis.h" +#include // back_inserter + using namespace Redis; class MyRedisService; @@ -63,7 +65,7 @@ class Transaction : public Interface for (unsigned i = 0; i < r.multi_bulk.size(); ++i) { - const Reply &reply = r.multi_bulk[i]; + const Reply *reply = r.multi_bulk[i]; if (interfaces.empty()) break; @@ -72,7 +74,7 @@ class Transaction : public Interface interfaces.pop_front(); if (inter) - inter->OnResult(reply); + inter->OnResult(*reply); } } }; @@ -321,7 +323,7 @@ size_t RedisSocket::ParseReply(Reply &r, const char *buffer, size_t l) Log(LOG_DEBUG) << "redis: status error: " << reason.substr(0, nl); if (nl != Anope::string::npos) { - r.type = Reply::ERROR; + r.type = Reply::NOT_OK; used = 1 + nl + 2; } break; @@ -398,21 +400,22 @@ size_t RedisSocket::ParseReply(Reply &r, const char *buffer, size_t l) { /* This multi bulk is already complete, so check the sub bulks */ for (unsigned i = 0; i < r.multi_bulk.size(); ++i) - if (r.multi_bulk[i].type == Reply::MULTI_BULK) - ParseReply(r.multi_bulk[i], buffer + used, l - used); + if (r.multi_bulk[i]->type == Reply::MULTI_BULK) + ParseReply(*r.multi_bulk[i], buffer + used, l - used); break; } for (int i = r.multi_bulk.size(); i < r.multi_bulk_size; ++i) { - r.multi_bulk.push_back(Reply()); - size_t u = ParseReply(r.multi_bulk.back(), buffer + used, l - used); + Reply *reply = new Reply(); + size_t u = ParseReply(*reply, buffer + used, l - used); if (!u) { Log(LOG_DEBUG) << "redis: ran out of data to parse"; - r.multi_bulk.pop_back(); + delete reply; break; } + r.multi_bulk.push_back(reply); used += u; } break; @@ -474,7 +477,7 @@ bool RedisSocket::Read(const char *buffer, size_t l) * __keyevent@0__:set * key */ - std::map::iterator it = this->subinterfaces.find(r.multi_bulk[1].bulk); + std::map::iterator it = this->subinterfaces.find(r.multi_bulk[1]->bulk); if (it != this->subinterfaces.end()) it->second->OnResult(r); } @@ -492,7 +495,7 @@ bool RedisSocket::Read(const char *buffer, size_t l) if (i) { - if (r.type != Reply::ERROR) + if (r.type != Reply::NOT_OK) i->OnResult(r); else i->OnError(r.bulk); -- cgit