From 09abad751e82fa24c108a8d938479a10ae1fb243 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Thu, 15 Aug 2013 12:29:33 +0100 Subject: [PATCH] idnode: fix bug in config saving, not calling callback properly --- src/idnode.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/idnode.c b/src/idnode.c index b6d4b0f7..6933e8e9 100644 --- a/src/idnode.c +++ b/src/idnode.c @@ -622,15 +622,27 @@ idnode_class_write_values return save; } +static void +idnode_savefn ( idnode_t *self ) +{ + const idclass_t *idc = self->in_class; + while (idc) { + if (idc->ic_save) { + idc->ic_save(self); + break; + } + idc = idc->ic_super; + } +} + int idnode_write0 ( idnode_t *self, htsmsg_t *c, int optmask, int dosave ) { int save = 0; const idclass_t *idc = self->in_class; - void (*savefn)(idnode_t*) = idc->ic_save; save = idnode_class_write_values(self, idc, c, optmask); if (save && dosave) { - if (savefn) savefn(self); + idnode_savefn(self); idnode_notify(self, NULL, 0, 0); } return save;