summaryrefslogtreecommitdiffstats
path: root/lib/command_queue.c
diff options
context:
space:
mode:
authorpaulo <paul@bayleaf.org.uk>2009-12-16 15:46:12 +0000
committerpaulo <paul@bayleaf.org.uk>2009-12-16 15:46:12 +0000
commitf5e3efd6013ee104d3310b5910607034c552e4db (patch)
tree1320e0ae2a47a267b5521adf90edfdc912d51281 /lib/command_queue.c
parentb69a458160a9ab354fb9350f605bd36310786304 (diff)
downloadquagga-f5e3efd6013ee104d3310b5910607034c552e4db.tar.bz2
quagga-f5e3efd6013ee104d3310b5910607034c552e4db.tar.xz
Fix race condition when threads start. Make memory stats thread safe
Run memory commands in cli thread.
Diffstat (limited to 'lib/command_queue.c')
-rw-r--r--lib/command_queue.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/command_queue.c b/lib/command_queue.c
index 902cd89c..9ca32e19 100644
--- a/lib/command_queue.c
+++ b/lib/command_queue.c
@@ -49,7 +49,7 @@ cq_enqueue(struct cmd_element *matched_element, struct vty *vty,
wyatt->matched_element = matched_element;
wyatt->vty = vty;
wyatt->argc = argc;
- wyatt->argv = XCALLOC(MTYPE_MARSHAL, sizeof (char*) * argc);
+ wyatt->argv = argc ? XCALLOC(MTYPE_MARSHAL, sizeof (char*) * argc) : NULL;
for (i = 0; i < argc; ++i)
{
wyatt->argv[i] = XSTRDUP(MTYPE_MARSHAL, argv[i]);
@@ -80,7 +80,8 @@ cq_action(mqueue_block mqb)
{
XFREE(MTYPE_MARSHAL, wyatt->argv[i]);
}
- XFREE(MTYPE_MARSHAL, wyatt->argv);
+ if (wyatt->argv)
+ XFREE(MTYPE_MARSHAL, wyatt->argv);
XFREE(MTYPE_MARSHAL, wyatt);
mqb_free(mqb);
}