X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-apiset.c;h=8d76bbfe14490eb18e723adaa781a470d39eab5e;hb=285fc5b291793dfbfe05625d352bd326e224b700;hp=a373c207d083d980372175979fd5e61474ddf774;hpb=95ee37b3cdb38efc4e77d072d00c7fc46b203d24;p=src%2Fapp-framework-binder.git diff --git a/src/afb-apiset.c b/src/afb-apiset.c index a373c207..8d76bbfe 100644 --- a/src/afb-apiset.c +++ b/src/afb-apiset.c @@ -264,21 +264,28 @@ error: */ int afb_apiset_del(struct afb_apiset *set, const char *name) { - int i, c; + struct api_desc *i, *e; + int c; /* search the api */ - for (i = 0 ; i < set->count ; i++) { - c = strcasecmp(set->apis[i].name, name); + i = set->apis; + e = i + set->count; + while (i != e) { + c = strcasecmp(i->name, name); if (c == 0) { + if (i->api.itf->unref) + i->api.itf->unref(i->api.closure); set->count--; - while(i < set->count) { - set->apis[i] = set->apis[i + 1]; + e--; + while (i != e) { + i[0] = i[1]; i++; } return 0; } if (c > 0) break; + i++; } errno = ENOENT; return -1;