/*
* This file is part of DisOrder
- * Copyright (C) 2005 Richard Kettlewell
+ * Copyright (C) 2005, 2007, 2008 Richard Kettlewell
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
}
static void veventlog(const char *keyword, const char *raw, va_list ap) {
- struct eventlog_output *p;
+ struct eventlog_output *p, *pnext;
struct dynstr d;
const char *param;
dynstr_append_string(&d, raw);
}
dynstr_terminate(&d);
- for(p = outputs; p; p = p->next)
+ for(p = outputs; p; p = pnext) {
+ /* We must be able to cope with eventlog_remove() being called from inside
+ * the callback */
+ pnext = p->next;
p->fn(d.vec, p->user);
+ }
}
void eventlog_raw(const char *keyword, const char *raw, ...) {
fill-column:79
End:
*/
-/* arch-tag:Io9E4IlqSMg7Kum3sq080Q */