From: Jo-Philipp Wich Date: Tue, 27 Apr 2010 07:25:20 +0000 (+0000) Subject: libs/cbi: fix crash with tabless sections X-Git-Tag: 0.10.0~683 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=4dc420efd355a732119cbbc01bff7ff9a32f80a7 libs/cbi: fix crash with tabless sections --- diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index cc22229fc..fff88a227 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -764,6 +764,11 @@ function AbstractSection.tab(self, tab, title, desc) } end +-- Check whether the section has tabs +function AbstractSection.has_tabs(self) + return (self.tabs ~= nil) and (next(self.tabs) ~= nil) +end + -- Appends a new option function AbstractSection.option(self, class, option, ...) if instanceof(class, AbstractValue) then @@ -813,7 +818,7 @@ function AbstractSection.parse_optionals(self, section) local field = self.map:formvalue("cbi.opt."..self.config.."."..section) for k,v in ipairs(self.children) do - if v.optional and not v:cfgvalue(section) and not next(self.tabs) then + if v.optional and not v:cfgvalue(section) and not self:has_tabs() then if field == v.option then field = nil self.map.proceed = true @@ -1290,7 +1295,7 @@ end -- Render if this value exists or if it is mandatory function AbstractValue.render(self, s, scope) - if not self.optional or next(self.section.tabs) or self:cfgvalue(s) or self:formcreated(s) then + if not self.optional or self.section:has_tabs() or self:cfgvalue(s) or self:formcreated(s) then scope = scope or {} scope.section = s scope.cbid = self:cbid(s)