From: Matthias Wachs Date: Wed, 7 Mar 2012 16:58:44 +0000 (+0000) Subject: - fix X-Git-Tag: initial-import-from-subversion-38251~14370 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=45778d82d7d094e40c59108da0b97e99f6caa77e;p=oweals%2Fgnunet.git - fix --- diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c index 67c7e6e57..723e81fe8 100644 --- a/src/namestore/gnunet-service-namestore.c +++ b/src/namestore/gnunet-service-namestore.c @@ -800,11 +800,10 @@ handle_record_remove_it (void *cls, const struct GNUNET_CRYPTO_RsaSignature *signature) { struct RemoveRecordContext *rrc = cls; - unsigned int rd_count_new = rd_count -1; - struct GNUNET_NAMESTORE_RecordData rd_new[rd_count_new]; unsigned int c; int res; - int found = GNUNET_NO; + int found; + unsigned int rd_count_new; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Name `%s 'currently has %u records\n", name, rd_count); @@ -816,7 +815,7 @@ handle_record_remove_it (void *cls, } /* Find record to remove */ - unsigned int c2 = 0; + found = GNUNET_SYSERR; for (c = 0; c < rd_count; c++) { if ((rd[c].expiration.abs_value == rrc->rd->expiration.abs_value) && @@ -826,21 +825,31 @@ handle_record_remove_it (void *cls, (0 == memcmp (rd[c].data, rrc->rd->data, rrc->rd->data_size))) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found record to remove!\n", rd_count); - found = GNUNET_YES; - continue; + found = c; + break; } - else - { - rd_new[c2] = rd[c]; - c2 ++; - } } - if ((c2 != rd_count_new) || (found == GNUNET_NO)) + if (GNUNET_SYSERR == found) { /* Could not find record to remove */ rrc->op_res = 2; return; } + + rd_count_new = rd_count -1; + struct GNUNET_NAMESTORE_RecordData rd_new[rd_count_new]; + + unsigned int c2 = 0; + for (c = 0; c < rd_count; c++) + { + if (c != found) + { + GNUNET_assert (c2 < rd_count_new); + rd_new[c2] = rd[c]; + c2++; + } + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Name `%s' now has %u records\n", name, rd_count_new); /* Create new signature */