On Thu, Mar 05, 2015 at 12:05:18 +0100, Michal Privoznik wrote:
Every API that touches internal structure of the object must lock
the object first. Not every API that has the object as an
argument needs to do that though. Some APIs just pass the object
to lower layers which, however, must lock the object then. Look
at the code, you'll get my meaning soon.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/network_conf.c | 46 +++++++++++++++++++++++++++++++++++++---------
1 file changed, 37 insertions(+), 9 deletions(-)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index 8cf9ffd..7af303e 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -157,16 +157,19 @@ virNetworkObjPtr
virNetworkObjFindByUUIDLocked(virNetworkObjListPtr nets,
const unsigned char *uuid)
{
+ virNetworkObjPtr ret = NULL;
size_t i;
for (i = 0; i < nets->count; i++) {
virObjectLock(nets->objs[i]);
- if (!memcmp(nets->objs[i]->def->uuid, uuid, VIR_UUID_BUFLEN))
- return nets->objs[i];
+ if (!memcmp(nets->objs[i]->def->uuid, uuid, VIR_UUID_BUFLEN)) {
+ ret = nets->objs[i];
+ break;
+ }
virObjectUnlock(nets->objs[i]);
}
This hunk ...
- return NULL;
+ return ret;
}
virNetworkObjPtr virNetworkObjFindByUUID(virNetworkObjListPtr nets,
@@ -184,16 +187,19 @@ virNetworkObjPtr
virNetworkObjFindByNameLocked(virNetworkObjListPtr nets,
const char *name)
{
+ virNetworkObjPtr ret = NULL;
size_t i;
for (i = 0; i < nets->count; i++) {
virObjectLock(nets->objs[i]);
- if (STREQ(nets->objs[i]->def->name, name))
- return nets->objs[i];
+ if (STREQ(nets->objs[i]->def->name, name)) {
+ ret = nets->objs[i];
+ break;
+ }
virObjectUnlock(nets->objs[i]);
}
and this hunk have no semantic impact. I presume they are an artifact of
the changes from previous version. I'd appreciate if you'd remove them
but I won't insist.
- return NULL;
+ return ret;
}
ACK
Peter