diff --git a/c_src/memcached_drv.cpp b/c_src/memcached_drv.cpp index b68f17e..d1968f4 100644 --- a/c_src/memcached_drv.cpp +++ b/c_src/memcached_drv.cpp @@ -200,52 +200,55 @@ class Driver int num_keys; if (!vec.get(num_keys) || num_keys <= 0 || num_keys>2000) goto L_badarg; - - char * keys[num_keys]; - size_t lengths[num_keys]; - - for(int i=0;i free_list; + vector free_list; - // [ {Key, Value, Flag}, ... ] - memcached_result_st *result; - while ( (result = memcached_fetch_result(m_cache, NULL, &rc)) ) - { - free_list.push_back(result); + // [ {Key, Value, Flag}, ... ] + memcached_result_st *result; + while ( (result = memcached_fetch_result(m_cache, NULL, &rc)) ) + { + free_list.push_back(result); - td.open_tuple(); - td.add_buf(result->item_key, result->key_length); - td.add_buf(result->value.string, result->value.end - result->value.string); - td.add_uint(result->item_flags); - td.close_tuple(); - } - td.close_list(); - send(td); - for(size_t i=0; iitem_key, result->key_length); + td.add_buf(result->value.string, result->value.end - result->value.string); + td.add_uint(result->item_flags); + td.close_tuple(); + } + + td.close_list(); + send(td); + for(size_t i=0; i2000) goto L_badarg; - char * keys[num_keys]; - size_t lengths[num_keys]; - - for(size_t i=0;i results; + vector results; - // [ {Key, Value, Flag}, ... ] - memcached_result_st *result; - while ( (result = memcached_fetch_result(m_cache, NULL, &rc)) ) - { - results.push_back(result); - //std::cout << "result: " << std::string(result->key, result->key_length) << "\r\n"; - } + // [ {Key, Value, Flag}, ... ] + memcached_result_st *result; + while ( (result = memcached_fetch_result(m_cache, NULL, &rc)) ) + { + results.push_back(result); + //std::cout << "result: " << std::string(result->key, result->key_length) << "\r\n"; + } - ok(td, true); - td.open_list(); + ok(td, true); + td.open_list(); - int ri = 0; - for(size_t i=0; ikey_length && - memcmp(keys[i], results[j]->item_key, lengths[i]) == 0) + memcached_result_st* r = NULL; + for(size_t j=ri; jkey_length && + memcmp(keys[i], results[j]->item_key, lengths[i]) == 0) + { + r = results[j]; + //ri = j+1; + break; + } + } + if (r) + { + td.open_tuple(); + //td.add_buf(result->key, result->key_length); + td.add_buf(r->value.string, r->value.end-r->value.string); + td.add_uint(r->item_flags); + td.close_tuple(); + } + else + { + td.add_atom((char*)"undefined"); } } - if (r) - { - td.open_tuple(); - //td.add_buf(result->key, result->key_length); - td.add_buf(r->value.string, r->value.end-r->value.string); - td.add_uint(r->item_flags); - td.close_tuple(); - } - else - { - td.add_atom((char*)"undefined"); - } - } - td.close_list(); - send(td); + td.close_list(); + send(td); - for(size_t i=0; i