<br><font size=2 face="sans-serif">Now that I have got libical to build
on windoze the next problem I found was that the regression test program
core dumped. I have the fix, which involves changes to the file icaltimezone.c.</font>
<br>
<br><font size=2 face="sans-serif">It was blowing up referencing through
a null pointer because the routine icaltimezone_parse_zone_tab does not
expect icaltzutil_get_zone_directory() or get_zone_directory() to return
the null pointer. However, there might be no timezone information directories
configured. Looking at this in the debugger revealed that it was going
down the code path for UNIX timezone files.  It was calling set_zonedir,
which has a list of UNIX directory names in which to look for zone.tab.
This is wrong for Windoze, but revealed  icaltimezone_parse_zone_tab
does not handle the case of no timezone files. I fixed it by changing the
code to look like this:</font>
<br>
<br><font size=2 face="sans-serif">    const char* zone_dir;</font>
<br>
<br><font size=2 face="sans-serif">    icalerror_assert (builtin_timezones
== NULL,</font>
<br><font size=2 face="sans-serif">         
            "Parsing zones.tab
file multiple times");</font>
<br>
<br><font size=2 face="sans-serif">    builtin_timezones = icalarray_new
(sizeof (icaltimezone), 32);</font>
<br>
<br><font size=2 face="sans-serif">#ifndef USE_BUILTIN_TZDATA</font>
<br><font size=2 face="sans-serif">    zone_dir = icaltzutil_get_zone_directory();</font>
<br><font size=2 face="sans-serif">    if (zone_dir == NULL)</font>
<br><font size=2 face="sans-serif">    {</font>
<br><font size=2 face="sans-serif">        return;</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">    filename_len = strlen((char
*)zone_dir) + strlen (ZONES_TAB_SYSTEM_FILENAME) + 2;</font>
<br><font size=2 face="sans-serif">#else    </font>
<br><font size=2 face="sans-serif">    zone_dir = get_zone_directory();</font>
<br><font size=2 face="sans-serif">    if (zone_dir == NULL)</font>
<br><font size=2 face="sans-serif">    {</font>
<br><font size=2 face="sans-serif">        return;</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">    filename_len = strlen(zone_dir)
+ strlen (ZONES_TAB_FILENAME) + 2;</font>
<br><font size=2 face="sans-serif">#endif    </font>
<br>
<br><font size=2 face="sans-serif">With this change in place, the regression
test program ran ok. I would be grateful for peoples comments on this fix
please. icaltzutil_get_zone_directory seems to expect that returning NULL
is ok when there is no timezone directory. Otherwise it would raise an
error, right?</font>
<br>
<br><font size=2 face="sans-serif">I am also puzzled by why it doesn't
call get_zone_directory, which has windoze-specific code for locating the
directory. It looks like it might be to do with USE_BUILTIN_TZDATA not
being defined. Also, it is looking for the file zone.tab, which does not
seem to be in the distribution.</font>
<br>
<br><font size=2 face="sans-serif">Regards,<br>
<br>
Andrew Marlow<br>
</font><pre>
___________________________________________________________
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is prohibited.

Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H  for additional disclosures.
</pre>