@@ -126,28 +126,32 @@ vector<int> SDSSECQSClient::search(int count, ...) {
126126 vector<GT> token_i;
127127 // compute z=Fp(K_Z, w||i)
128128 Zr z = Fp (w_i, sizeof (w_i), K_Z);
129+ token_i.reserve (xterms.size ());
129130 for (const string &xterm: xterms) {
130131 token_i.emplace_back ((*gpp) ^ (z * Fp ((uint8_t *) xterm.c_str (), xterm.size (), K_X)
131132 * Fp ((uint8_t *) sterm.c_str (), sterm.size (), K_z)));
132- // if xterm is never inserted, return an empty vector
133- if (CT.find (xterm) == CT.end ()) {
134- return {};
135- }
136- vector<Zr> zx_i;
137- for (int k = 0 ; k <= CT[xterm]; k++) {
138- // w_j=w||j
139- uint8_t w_j[xterm.size () + sizeof (int )];
140- // reset the buffer
141- memset (w_j, 0 , xterm.size () + sizeof (int ));
142- memcpy (w_j, xterm.c_str (), xterm.size ());
143- memcpy (w_j + xterm.size (), (uint8_t *) &k, sizeof (int ));
144- zx_i.emplace_back (Fp (w_j, sizeof (w_j), K_x)
145- * Fp ((uint8_t *) sterm.c_str (), sterm.size (), K_z));
146- }
147- zxtoken_list.emplace_back (zx_i);
148133 }
149134 wxtoken_list.emplace_back (token_i);
150135 }
136+
137+ for (const string &xterm: xterms) {
138+ // if xterm is never inserted, return an empty vector
139+ if (CT.find (xterm) == CT.end ()) {
140+ return {};
141+ }
142+ vector<Zr> zx_i;
143+ for (int k = 0 ; k <= CT[xterm]; k++) {
144+ // w_j=w||j
145+ uint8_t w_j[xterm.size () + sizeof (int )];
146+ // reset the buffer
147+ memset (w_j, 0 , xterm.size () + sizeof (int ));
148+ memcpy (w_j, xterm.c_str (), xterm.size ());
149+ memcpy (w_j + xterm.size (), (uint8_t *) &k, sizeof (int ));
150+ zx_i.emplace_back (Fp (w_j, sizeof (w_j), K_x)
151+ * Fp ((uint8_t *) sterm.c_str (), sterm.size (), K_z));
152+ }
153+ zxtoken_list.emplace_back (zx_i);
154+ }
151155 }
152156 va_end (keyword_list);
153157
0 commit comments