From e85d23980b8d544ac2e580af7a029a8f7e9c4eea Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Dec 1999 11:25:31 +0000 Subject: [PATCH] * timezone.inc dep for linux.ppu * fixed sigsegvs with wrong timezone settigns --- rtl/linux/Makefile | 4 ++-- rtl/linux/Makefile.fpc | 2 +- rtl/linux/timezone.inc | 49 +++++++++++++++++++++++++++++------------- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/rtl/linux/Makefile b/rtl/linux/Makefile index 1964295749..04c61841be 100644 --- a/rtl/linux/Makefile +++ b/rtl/linux/Makefile @@ -1,5 +1,5 @@ # -# Makefile generated by fpcmake v0.99.13 on 1999-11-25 23:51 +# Makefile generated by fpcmake v0.99.13 on 1999-12-02 12:06 # defaultrule: all @@ -1081,7 +1081,7 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\ # linux$(PPUEXT) : linux.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \ - syscalls.inc systypes.inc sysconst.inc $(SYSTEMPPU) + syscalls.inc systypes.inc sysconst.inc timezone.inc $(SYSTEMPPU) ports$(PPUEXT) : ports.pp linux$(PPUEXT) objpas$(PPUEXT) diff --git a/rtl/linux/Makefile.fpc b/rtl/linux/Makefile.fpc index 2f2e901c95..9d1aa52768 100644 --- a/rtl/linux/Makefile.fpc +++ b/rtl/linux/Makefile.fpc @@ -119,7 +119,7 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\ # linux$(PPUEXT) : linux.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \ - syscalls.inc systypes.inc sysconst.inc $(SYSTEMPPU) + syscalls.inc systypes.inc sysconst.inc timezone.inc $(SYSTEMPPU) ports$(PPUEXT) : ports.pp linux$(PPUEXT) objpas$(PPUEXT) diff --git a/rtl/linux/timezone.inc b/rtl/linux/timezone.inc index fb6a8a81a5..e9e47aac4f 100644 --- a/rtl/linux/timezone.inc +++ b/rtl/linux/timezone.inc @@ -72,25 +72,32 @@ var info : pttinfo; i : longint; begin +{ reset } + TZDaylight:=false; + TZSeconds:=0; + TZName[false]:=nil; + TZName[true]:=nil; + leap_correct:=0; + leap_hit:=0; +{ get info } info:=find_transition(timer); + if not assigned(info) then + exit; TZDaylight:=info^.isdst; TZSeconds:=info^.offset; i:=0; - while (i0) do - begin - if (timer>leaps[i].transition) then - break; - dec(i); - end; + repeat + if i=0 then + exit; + dec(i); + until (timer>leaps[i].transition); leap_correct:=leaps[i].change; if (timer=leaps[i].transition) and (((i=0) and (leaps[i].change>0)) or @@ -246,16 +253,28 @@ end; procedure DoneLocalTime; begin - freemem(transitions); - freemem(type_idxs); - freemem(types); - freemem(zone_names); - freemem(leaps); + if assigned(transitions) then + freemem(transitions); + if assigned(type_idxs) then + freemem(type_idxs); + if assigned(types) then + freemem(types); + if assigned(zone_names) then + freemem(zone_names); + if assigned(leaps) then + freemem(leaps); + num_transitions:=0; + num_leaps:=0; + num_types:=0; end; { $Log$ - Revision 1.1 1999-12-01 22:46:59 peter + Revision 1.2 1999-12-02 11:25:31 peter + * timezone.inc dep for linux.ppu + * fixed sigsegvs with wrong timezone settigns + + Revision 1.1 1999/12/01 22:46:59 peter + timezone support }