From 909023625237d1767dbbf77758731f5a3f138ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Mon, 10 Jun 2013 16:50:15 +0200 Subject: [PATCH] Calendar.Timezone: Make compile() reentrant. Each time compile() was called an additional set of rules was appended. This could be triggered when a zone had compilation errors. Also fixes issue with throwing broken errors from compile(). --- lib/modules/Calendar.pmod/Timezone.pmod | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/modules/Calendar.pmod/Timezone.pmod b/lib/modules/Calendar.pmod/Timezone.pmod index cc60cdcac1..a7c11de6b5 100644 --- a/lib/modules/Calendar.pmod/Timezone.pmod +++ b/lib/modules/Calendar.pmod/Timezone.pmod @@ -1186,6 +1186,7 @@ class Runtime_timezone_compiler float t1=time(t); #endif + rules = ({}); foreach(lines, string line) add(line); string c=dump(); @@ -1206,7 +1207,7 @@ class Runtime_timezone_compiler { int i=0; foreach (c/"\n",string line) write("%2d: %s\n",++i,line); - error(err); + throw(err); } object zo=p(); if (zo->thezone) zo=zo->thezone; -- GitLab