lookup in reverse order also inside of batch

This commit is contained in:
Christian Grothoff 2020-03-28 21:45:46 +01:00
parent 96c5cd4c42
commit bc57f007e4
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC

View File

@ -68,20 +68,29 @@ TALER_TESTING_interpreter_lookup_command (struct TALER_TESTING_Interpreter *is,
{ {
#define BATCH_INDEX 1 #define BATCH_INDEX 1
struct TALER_TESTING_Command *batch; struct TALER_TESTING_Command *batch;
struct TALER_TESTING_Command *current;
const struct TALER_TESTING_Command *match;
current = TALER_TESTING_cmd_batch_get_current (cmd);
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
TALER_TESTING_get_trait_cmd (cmd, TALER_TESTING_get_trait_cmd (cmd,
BATCH_INDEX, BATCH_INDEX,
&batch)); &batch));
/* We must do the loop forward, but we can find the last match */
match = NULL;
for (unsigned int j = 0; for (unsigned int j = 0;
NULL != (cmd = &batch[j])->label; NULL != (cmd = &batch[j])->label;
j++) j++)
{ {
if (current == cmd)
break; /* do not go past current command */
if ( (NULL != cmd->label) && if ( (NULL != cmd->label) &&
(0 == strcmp (cmd->label, (0 == strcmp (cmd->label,
label)) ) label)) )
return cmd; match = cmd;
} }
if (NULL != match)
return match;
} }
} }
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, GNUNET_log (GNUNET_ERROR_TYPE_ERROR,