Skip to content
This repository has been archived by the owner on Jun 1, 2022. It is now read-only.

MSVC parser stack overflow #64

Closed
gvanem opened this issue Jul 29, 2015 · 17 comments · Fixed by #65
Closed

MSVC parser stack overflow #64

gvanem opened this issue Jul 29, 2015 · 17 comments · Fixed by #65

Comments

@gvanem
Copy link

gvanem commented Jul 29, 2015

Trying to compile regionName.c consistently reports:

  libGeoIP/regionName.c(7596): fatal error C1026: parser stack overflow,
  program too complex 

This happens even on the latest MSVC v19.00.23026 for x86 (on Win-8.1). I've not tried X64, but the parser stack overflow (i.e. internal compiler error) also happens in MSVC v18.x.y. I've tried several variations of CFLAGS and optimize settings w/o any cure.

IMHO the regionName.c should be written using table-lookup. But I'll let you decide if I shall make a diff for this. Funny this has gone unnoticed for so long....

@oschwald
Copy link
Member

A table lookup seems reasonable. The file is generated by regioncode/generate_regionName.pl.

@gvanem
Copy link
Author

gvanem commented Aug 5, 2015

A table lookup seems reasonable. The file is generated by regioncode/generate_regionName.pl.

I see. But I'm very rusty on Perl 😢. How about me trying to use Python for this?

@oschwald
Copy link
Member

oschwald commented Aug 5, 2015

I think that would be fine.

@gvanem
Copy link
Author

gvanem commented Aug 13, 2015

I think that would be fine.

I now have a working Python script for generating libGeoIP/timeZone.c. Please take a
look (and test) in case I've misunderstood something. It's here. I've tested using:

python timezone/generate_timeZone.py > test.c
gcc -m32 -o test.exe -g -DTEST -Wall test.c

from the base-dir.

I will try to do a similar rewrite of regioncode/generate_regionName.pl.

@oschwald
Copy link
Member

Cool. We might want to update it to use the CSV format of the newer timezone.txt files. The file checked into the repo seems to be pretty dated.

@oschwald
Copy link
Member

I haven't looked at the generated code closely yet, but I wrote a script to test it through the Geo::IP Perl API:

use Geo::IP;
use Test::More;

my $gi = Geo::IP->new(GEOIP_MEMORY_CACHE);

<>;

while (<>) {
    chomp;
    my ( $country, $region, $timezone ) = split /\t/;

    is(
        $gi->time_zone( $country, $region ), $timezone,
        "$country - $region lookup worked"
    );
}

done_testing();

Unfortunately this fails with errors and eventually a segfault:

ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
not ok 27
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 28
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 29
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 30
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 31
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 32
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 33
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 34
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 35
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 36
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 37
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 38
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 39
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 40
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 41
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 42
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 43
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 44
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 45
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 46
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 47
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 48
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 49
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 50
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 51
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
ok 52
ok 53
ok 54
ok 55
ok 56
ok 57
ok 58
not ok 59
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Rankin_Inlet'
not ok 60
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Toronto'
not ok 61
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Halifax'
not ok 62
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Toronto'
not ok 63
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Regina'
not ok 64
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'America/Whitehorse'
ok 65
ok 66
ok 67
ok 68
not ok 69
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'Australia/Adelaide'
not ok 70
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'Australia/Hobart'
not ok 71
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'Australia/Melbourne'
not ok 72
#   Failed test at test.pl line 12.
#          got: undef
#     expected: 'Australia/Perth'
Segmentation fault (core dumped)

It runs fine on the old version.

@gvanem
Copy link
Author

gvanem commented Aug 13, 2015

Can't say since I'm a Perl neophyte and I don't know how your script works.
But I'm not a Python expert either. Just that's so much more understandable.

@oschwald
Copy link
Member

It just calls that function through the Perl API for every pair in the file. It would be easy to do the same with the Python GeoIP extension if you want to try that.

@oschwald
Copy link
Member

The back trace suggests that the problem is here:

  for (i = 0; element && i < element->num; i += 2)
  {
    if (!region || !strcmp(region,element->tz_regions[i+REGION]))

@gvanem
Copy link
Author

gvanem commented Aug 13, 2015

Hm. I've changed the script into something that was in the original .pl-script. Diff:

@@ -96,6 +97,9 @@
   if (country == NULL)
      return (NULL);

+  if (region == NULL)
+     region = "";
+
   to_find.country = country;

 #if 0  /* todo: make compare() do all the work */
@@ -116,7 +120,7 @@

   for (i = 0; element && i < element->num; i += 2)
   {
-    if (!region || !strcmp(region,element->tz_regions[i+REGION]))
+    if (!region[0] || !strcmp(region,element->tz_regions[i+REGION]))
     {
       tz = element->tz_regions [i+TIMEZONE];
       TRACE ("  Found matching zone: \"%s\" and region: \"%s\"\n",

Updated Rev. 1B here.

I'm now working on generate_regionName.py and understand little of that .pl-script E.g.
can you explain the mapping of 0-9 + A-Z into ccode2. In such code:

  my $region_code2 =
    ( ( ord( substr( $region_code, 0, 1 ) ) - 48 ) * ( 65 + 26 - 48 ) ) +
    ord( substr( $region_code, 1, 1 ) ) - 48 + 100;

What's special about 26 and 100?

@oschwald
Copy link
Member

It no longer segfaults for me on valid input, but not all of the country/region pairs match. From that same script:

ok 1 - US - AL lookup worked
ok 2 - US - AK lookup worked
ok 3 - US - AZ lookup worked
ok 4 - US - AR lookup worked
ok 5 - US - CA lookup worked
ok 6 - US - CO lookup worked
ok 7 - US - CT lookup worked
ok 8 - US - DE lookup worked
ok 9 - US - DC lookup worked
ok 10 - US - FL lookup worked
ok 11 - US - GA lookup worked
ok 12 - US - HI lookup worked
ok 13 - US - ID lookup worked
ok 14 - US - IL lookup worked
ok 15 - US - IN lookup worked
ok 16 - US - IA lookup worked
ok 17 - US - KS lookup worked
ok 18 - US - KY lookup worked
ok 19 - US - LA lookup worked
ok 20 - US - ME lookup worked
ok 21 - US - MD lookup worked
ok 22 - US - MA lookup worked
ok 23 - US - MI lookup worked
ok 24 - US - MN lookup worked
ok 25 - US - MS lookup worked
ok 26 - US - MO lookup worked
not ok 27 - US - MT lookup worked
#   Failed test 'US - MT lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 28 - US - NE lookup worked
#   Failed test 'US - NE lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 29 - US - NV lookup worked
#   Failed test 'US - NV lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 30 - US - NH lookup worked
#   Failed test 'US - NH lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 31 - US - NJ lookup worked
#   Failed test 'US - NJ lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 32 - US - NM lookup worked
#   Failed test 'US - NM lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 33 - US - NY lookup worked
#   Failed test 'US - NY lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 34 - US - NC lookup worked
#   Failed test 'US - NC lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 35 - US - ND lookup worked
#   Failed test 'US - ND lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 36 - US - OH lookup worked
#   Failed test 'US - OH lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 37 - US - OK lookup worked
#   Failed test 'US - OK lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 38 - US - OR lookup worked
#   Failed test 'US - OR lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 39 - US - PA lookup worked
#   Failed test 'US - PA lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 40 - US - RI lookup worked
#   Failed test 'US - RI lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 41 - US - SC lookup worked
#   Failed test 'US - SC lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 42 - US - SD lookup worked
#   Failed test 'US - SD lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 43 - US - TN lookup worked
#   Failed test 'US - TN lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 44 - US - TX lookup worked
#   Failed test 'US - TX lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 45 - US - UT lookup worked
#   Failed test 'US - UT lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
not ok 46 - US - VT lookup worked
#   Failed test 'US - VT lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 47 - US - VA lookup worked
#   Failed test 'US - VA lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 48 - US - WA lookup worked
#   Failed test 'US - WA lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Los_Angeles'
not ok 49 - US - WV lookup worked
#   Failed test 'US - WV lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/New_York'
not ok 50 - US - WI lookup worked
#   Failed test 'US - WI lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Chicago'
not ok 51 - US - WY lookup worked
#   Failed test 'US - WY lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Denver'
ok 52 - CA - AB lookup worked
ok 53 - CA - BC lookup worked
ok 54 - CA - MB lookup worked
ok 55 - CA - NB lookup worked
ok 56 - CA - NL lookup worked
ok 57 - CA - NT lookup worked
ok 58 - CA - NS lookup worked
not ok 59 - CA - NU lookup worked
#   Failed test 'CA - NU lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Rankin_Inlet'
not ok 60 - CA - ON lookup worked
#   Failed test 'CA - ON lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Toronto'
not ok 61 - CA - PE lookup worked
#   Failed test 'CA - PE lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Halifax'
not ok 62 - CA - QC lookup worked
#   Failed test 'CA - QC lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Toronto'
not ok 63 - CA - SK lookup worked
#   Failed test 'CA - SK lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Regina'
not ok 64 - CA - YT lookup worked
#   Failed test 'CA - YT lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Whitehorse'
ok 65 - AU - 01 lookup worked
ok 66 - AU - 02 lookup worked
ok 67 - AU - 03 lookup worked
ok 68 - AU - 04 lookup worked
not ok 69 - AU - 05 lookup worked
#   Failed test 'AU - 05 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Australia/Adelaide'
not ok 70 - AU - 06 lookup worked
#   Failed test 'AU - 06 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Australia/Hobart'
not ok 71 - AU - 07 lookup worked
#   Failed test 'AU - 07 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Australia/Melbourne'
not ok 72 - AU - 08 lookup worked
#   Failed test 'AU - 08 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Australia/Perth'
ok 73 - AS -  lookup worked
ok 74 - CI -  lookup worked
ok 75 - GH -  lookup worked
ok 76 - DZ -  lookup worked
ok 77 - ER -  lookup worked
ok 78 - ML -  lookup worked
ok 79 - CF -  lookup worked
ok 80 - GM -  lookup worked
ok 81 - GW -  lookup worked
ok 82 - CG -  lookup worked
ok 83 - BI -  lookup worked
ok 84 - EG -  lookup worked
ok 85 - MA -  lookup worked
ok 86 - GN -  lookup worked
ok 87 - SN -  lookup worked
ok 88 - DJ -  lookup worked
ok 89 - SL -  lookup worked
ok 90 - BW -  lookup worked
ok 91 - ZW -  lookup worked
ok 92 - ZA -  lookup worked
ok 93 - UG -  lookup worked
ok 94 - SD -  lookup worked
ok 95 - SS -  lookup worked
ok 96 - RW -  lookup worked
ok 97 - NG -  lookup worked
ok 98 - GA -  lookup worked
ok 99 - TG -  lookup worked
ok 100 - AO -  lookup worked
ok 101 - ZM -  lookup worked
ok 102 - GQ -  lookup worked
ok 103 - MZ -  lookup worked
ok 104 - LS -  lookup worked
ok 105 - SZ -  lookup worked
ok 106 - SO -  lookup worked
ok 107 - LR -  lookup worked
ok 108 - KE -  lookup worked
ok 109 - TD -  lookup worked
ok 110 - NE -  lookup worked
ok 111 - MR -  lookup worked
ok 112 - BF -  lookup worked
ok 113 - ST -  lookup worked
ok 114 - LY -  lookup worked
ok 115 - TN -  lookup worked
ok 116 - AI -  lookup worked
ok 117 - AG -  lookup worked
ok 118 - AW -  lookup worked
ok 119 - BB -  lookup worked
ok 120 - BZ -  lookup worked
ok 121 - CO -  lookup worked
ok 122 - VE -  lookup worked
ok 123 - KY -  lookup worked
ok 124 - CR -  lookup worked
ok 125 - DM -  lookup worked
ok 126 - SV -  lookup worked
ok 127 - GD -  lookup worked
ok 128 - FR -  lookup worked
ok 129 - GP -  lookup worked
ok 130 - GT -  lookup worked
ok 131 - GY -  lookup worked
ok 132 - CU -  lookup worked
ok 133 - JM -  lookup worked
ok 134 - BO -  lookup worked
ok 135 - PE -  lookup worked
ok 136 - NI -  lookup worked
ok 137 - MQ -  lookup worked
ok 138 - UY -  lookup worked
ok 139 - MS -  lookup worked
ok 140 - BS -  lookup worked
ok 141 - PA -  lookup worked
ok 142 - SR -  lookup worked
ok 143 - PR -  lookup worked
ok 144 - KN -  lookup worked
ok 145 - LC -  lookup worked
ok 146 - VC -  lookup worked
ok 147 - HN -  lookup worked
ok 148 - YE -  lookup worked
ok 149 - JO -  lookup worked
ok 150 - TM -  lookup worked
ok 151 - IQ -  lookup worked
ok 152 - BH -  lookup worked
ok 153 - AZ -  lookup worked
ok 154 - TH -  lookup worked
ok 155 - LB -  lookup worked
ok 156 - KG -  lookup worked
ok 157 - BN -  lookup worked
ok 158 - IN -  lookup worked
ok 159 - LK -  lookup worked
ok 160 - BD -  lookup worked
ok 161 - AE -  lookup worked
ok 162 - TJ -  lookup worked
ok 163 - HK -  lookup worked
ok 164 - TR -  lookup worked
ok 165 - IL -  lookup worked
ok 166 - AF -  lookup worked
ok 167 - PK -  lookup worked
ok 168 - NP -  lookup worked
ok 169 - KW -  lookup worked
ok 170 - MO -  lookup worked
ok 171 - PH -  lookup worked
ok 172 - OM -  lookup worked
ok 173 - CY -  lookup worked
ok 174 - KP -  lookup worked
ok 175 - QA -  lookup worked
ok 176 - MM -  lookup worked
ok 177 - SA -  lookup worked
ok 178 - KR -  lookup worked
ok 179 - SG -  lookup worked
ok 180 - TW -  lookup worked
ok 181 - GE -  lookup worked
ok 182 - BT -  lookup worked
ok 183 - JP -  lookup worked
ok 184 - LA -  lookup worked
ok 185 - AM -  lookup worked
ok 186 - BM -  lookup worked
ok 187 - CV -  lookup worked
ok 188 - FO -  lookup worked
ok 189 - IS -  lookup worked
ok 190 - GS -  lookup worked
ok 191 - SH -  lookup worked
ok 192 - CL -  lookup worked
ok 193 - NL -  lookup worked
ok 194 - AD -  lookup worked
ok 195 - GR -  lookup worked
ok 196 - YU -  lookup worked
ok 197 - DE -  lookup worked
ok 198 - SK -  lookup worked
ok 199 - BE -  lookup worked
ok 200 - RO -  lookup worked
ok 201 - HU -  lookup worked
ok 202 - DK -  lookup worked
ok 203 - IE -  lookup worked
ok 204 - GI -  lookup worked
ok 205 - FI -  lookup worked
ok 206 - SI -  lookup worked
ok 207 - GB -  lookup worked
ok 208 - LU -  lookup worked
ok 209 - MT -  lookup worked
ok 210 - BY -  lookup worked
ok 211 - MC -  lookup worked
ok 212 - NO -  lookup worked
ok 213 - CZ -  lookup worked
ok 214 - LV -  lookup worked
ok 215 - IT -  lookup worked
ok 216 - SM -  lookup worked
ok 217 - BA -  lookup worked
ok 218 - MK -  lookup worked
ok 219 - BG -  lookup worked
ok 220 - SE -  lookup worked
ok 221 - EE -  lookup worked
ok 222 - AL -  lookup worked
ok 223 - LI -  lookup worked
ok 224 - VA -  lookup worked
ok 225 - AT -  lookup worked
ok 226 - LT -  lookup worked
ok 227 - PL -  lookup worked
ok 228 - HR -  lookup worked
ok 229 - IR -  lookup worked
ok 230 - MG -  lookup worked
ok 231 - CX -  lookup worked
ok 232 - CC -  lookup worked
ok 233 - KM -  lookup worked
ok 234 - MV -  lookup worked
ok 235 - MU -  lookup worked
ok 236 - YT -  lookup worked
ok 237 - RE -  lookup worked
ok 238 - FJ -  lookup worked
ok 239 - TV -  lookup worked
ok 240 - GU -  lookup worked
ok 241 - NR -  lookup worked
ok 242 - NU -  lookup worked
ok 243 - NF -  lookup worked
ok 244 - PW -  lookup worked
ok 245 - PN -  lookup worked
ok 246 - CK -  lookup worked
ok 247 - WS -  lookup worked
ok 248 - KI -  lookup worked
ok 249 - TO -  lookup worked
ok 250 - WF -  lookup worked
ok 251 - TZ -  lookup worked
ok 252 - VN -  lookup worked
ok 253 - KH -  lookup worked
ok 254 - CM -  lookup worked
ok 255 - DO -  lookup worked
ok 256 - ET -  lookup worked
ok 257 - FX -  lookup worked
ok 258 - HT -  lookup worked
ok 259 - CH -  lookup worked
ok 260 - AN -  lookup worked
ok 261 - BJ -  lookup worked
ok 262 - EH -  lookup worked
ok 263 - FK -  lookup worked
ok 264 - GF -  lookup worked
ok 265 - IO -  lookup worked
ok 266 - MD -  lookup worked
ok 267 - MP -  lookup worked
ok 268 - MW -  lookup worked
ok 269 - NA -  lookup worked
ok 270 - NC -  lookup worked
ok 271 - PG -  lookup worked
ok 272 - PM -  lookup worked
ok 273 - PS -  lookup worked
ok 274 - PY -  lookup worked
ok 275 - SB -  lookup worked
ok 276 - SC -  lookup worked
ok 277 - SJ -  lookup worked
ok 278 - SY -  lookup worked
ok 279 - TC -  lookup worked
ok 280 - TF -  lookup worked
ok 281 - TK -  lookup worked
ok 282 - TT -  lookup worked
ok 283 - VG -  lookup worked
ok 284 - VI -  lookup worked
ok 285 - VU -  lookup worked
ok 286 - RS -  lookup worked
ok 287 - ME -  lookup worked
ok 288 - AX -  lookup worked
ok 289 - GG -  lookup worked
ok 290 - IM -  lookup worked
ok 291 - JE -  lookup worked
ok 292 - BL -  lookup worked
ok 293 - MF -  lookup worked
ok 294 - MH -  lookup worked
ok 295 - UM -  lookup worked
ok 296 - AR - 01 lookup worked
ok 297 - AR - 02 lookup worked
ok 298 - AR - 03 lookup worked
ok 299 - AR - 04 lookup worked
ok 300 - AR - 05 lookup worked
ok 301 - AR - 06 lookup worked
ok 302 - AR - 07 lookup worked
ok 303 - AR - 08 lookup worked
ok 304 - AR - 09 lookup worked
ok 305 - AR - 10 lookup worked
ok 306 - AR - 11 lookup worked
ok 307 - AR - 12 lookup worked
not ok 308 - AR - 13 lookup worked
#   Failed test 'AR - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Mendoza'
not ok 309 - AR - 14 lookup worked
#   Failed test 'AR - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Buenos_Aires'
not ok 310 - AR - 15 lookup worked
#   Failed test 'AR - 15 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/San_Luis'
not ok 311 - AR - 16 lookup worked
#   Failed test 'AR - 16 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Buenos_Aires'
not ok 312 - AR - 17 lookup worked
#   Failed test 'AR - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Salta'
not ok 313 - AR - 18 lookup worked
#   Failed test 'AR - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/San_Juan'
not ok 314 - AR - 19 lookup worked
#   Failed test 'AR - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/San_Luis'
not ok 315 - AR - 20 lookup worked
#   Failed test 'AR - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Rio_Gallegos'
not ok 316 - AR - 21 lookup worked
#   Failed test 'AR - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Buenos_Aires'
not ok 317 - AR - 22 lookup worked
#   Failed test 'AR - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Catamarca'
not ok 318 - AR - 23 lookup worked
#   Failed test 'AR - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Ushuaia'
not ok 319 - AR - 24 lookup worked
#   Failed test 'AR - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Argentina/Tucuman'
ok 320 - BR - 01 lookup worked
ok 321 - BR - 02 lookup worked
ok 322 - BR - 03 lookup worked
ok 323 - BR - 04 lookup worked
ok 324 - BR - 05 lookup worked
ok 325 - BR - 06 lookup worked
ok 326 - BR - 07 lookup worked
ok 327 - BR - 08 lookup worked
ok 328 - BR - 11 lookup worked
ok 329 - BR - 13 lookup worked
ok 330 - BR - 14 lookup worked
ok 331 - BR - 15 lookup worked
ok 332 - BR - 16 lookup worked
ok 333 - BR - 17 lookup worked
not ok 334 - BR - 18 lookup worked
#   Failed test 'BR - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 335 - BR - 20 lookup worked
#   Failed test 'BR - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Fortaleza'
not ok 336 - BR - 21 lookup worked
#   Failed test 'BR - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 337 - BR - 22 lookup worked
#   Failed test 'BR - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Recife'
not ok 338 - BR - 23 lookup worked
#   Failed test 'BR - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 339 - BR - 24 lookup worked
#   Failed test 'BR - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Porto_Velho'
not ok 340 - BR - 25 lookup worked
#   Failed test 'BR - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Boa_Vista'
not ok 341 - BR - 26 lookup worked
#   Failed test 'BR - 26 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 342 - BR - 27 lookup worked
#   Failed test 'BR - 27 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 343 - BR - 28 lookup worked
#   Failed test 'BR - 28 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Maceio'
not ok 344 - BR - 29 lookup worked
#   Failed test 'BR - 29 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Sao_Paulo'
not ok 345 - BR - 30 lookup worked
#   Failed test 'BR - 30 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Recife'
not ok 346 - BR - 31 lookup worked
#   Failed test 'BR - 31 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Araguaina'
ok 347 - CD - 01 lookup worked
ok 348 - CD - 02 lookup worked
ok 349 - CD - 03 lookup worked
ok 350 - CD - 04 lookup worked
ok 351 - CD - 05 lookup worked
ok 352 - CD - 06 lookup worked
not ok 353 - CD - 07 lookup worked
#   Failed test 'CD - 07 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Lubumbashi'
not ok 354 - CD - 08 lookup worked
#   Failed test 'CD - 08 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Kinshasa'
not ok 355 - CD - 09 lookup worked
#   Failed test 'CD - 09 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Lubumbashi'
not ok 356 - CD - 10 lookup worked
#   Failed test 'CD - 10 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Lubumbashi'
not ok 357 - CD - 11 lookup worked
#   Failed test 'CD - 11 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Lubumbashi'
not ok 358 - CD - 12 lookup worked
#   Failed test 'CD - 12 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Africa/Lubumbashi'
ok 359 - CN - 01 lookup worked
ok 360 - CN - 02 lookup worked
ok 361 - CN - 03 lookup worked
ok 362 - CN - 04 lookup worked
ok 363 - CN - 05 lookup worked
ok 364 - CN - 06 lookup worked
ok 365 - CN - 07 lookup worked
ok 366 - CN - 08 lookup worked
ok 367 - CN - 09 lookup worked
ok 368 - CN - 10 lookup worked
ok 369 - CN - 11 lookup worked
ok 370 - CN - 12 lookup worked
ok 371 - CN - 13 lookup worked
ok 372 - CN - 14 lookup worked
ok 373 - CN - 15 lookup worked
ok 374 - CN - 16 lookup worked
not ok 375 - CN - 18 lookup worked
#   Failed test 'CN - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 376 - CN - 19 lookup worked
#   Failed test 'CN - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Harbin'
not ok 377 - CN - 20 lookup worked
#   Failed test 'CN - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Harbin'
not ok 378 - CN - 21 lookup worked
#   Failed test 'CN - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 379 - CN - 22 lookup worked
#   Failed test 'CN - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Harbin'
not ok 380 - CN - 23 lookup worked
#   Failed test 'CN - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Shanghai'
not ok 381 - CN - 24 lookup worked
#   Failed test 'CN - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 382 - CN - 25 lookup worked
#   Failed test 'CN - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Shanghai'
not ok 383 - CN - 26 lookup worked
#   Failed test 'CN - 26 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 384 - CN - 28 lookup worked
#   Failed test 'CN - 28 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Shanghai'
not ok 385 - CN - 29 lookup worked
#   Failed test 'CN - 29 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 386 - CN - 30 lookup worked
#   Failed test 'CN - 30 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 387 - CN - 31 lookup worked
#   Failed test 'CN - 31 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 388 - CN - 32 lookup worked
#   Failed test 'CN - 32 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
not ok 389 - CN - 33 lookup worked
#   Failed test 'CN - 33 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Chongqing'
ok 390 - EC - 01 lookup worked
ok 391 - EC - 02 lookup worked
ok 392 - EC - 03 lookup worked
ok 393 - EC - 04 lookup worked
ok 394 - EC - 05 lookup worked
ok 395 - EC - 06 lookup worked
ok 396 - EC - 07 lookup worked
ok 397 - EC - 08 lookup worked
ok 398 - EC - 09 lookup worked
ok 399 - EC - 10 lookup worked
ok 400 - EC - 11 lookup worked
not ok 401 - EC - 12 lookup worked
#   Failed test 'EC - 12 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 402 - EC - 13 lookup worked
#   Failed test 'EC - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 403 - EC - 14 lookup worked
#   Failed test 'EC - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 404 - EC - 15 lookup worked
#   Failed test 'EC - 15 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 405 - EC - 17 lookup worked
#   Failed test 'EC - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 406 - EC - 18 lookup worked
#   Failed test 'EC - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 407 - EC - 19 lookup worked
#   Failed test 'EC - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 408 - EC - 20 lookup worked
#   Failed test 'EC - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 409 - EC - 22 lookup worked
#   Failed test 'EC - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
not ok 410 - EC - 24 lookup worked
#   Failed test 'EC - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Guayaquil'
ok 411 - ES - 07 lookup worked
ok 412 - ES - 27 lookup worked
ok 413 - ES - 29 lookup worked
ok 414 - ES - 31 lookup worked
ok 415 - ES - 32 lookup worked
ok 416 - ES - 34 lookup worked
ok 417 - ES - 39 lookup worked
ok 418 - ES - 51 lookup worked
ok 419 - ES - 52 lookup worked
not ok 420 - ES - 53 lookup worked
#   Failed test 'ES - 53 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Atlantic/Canary'
not ok 421 - ES - 54 lookup worked
#   Failed test 'ES - 54 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 422 - ES - 55 lookup worked
#   Failed test 'ES - 55 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 423 - ES - 56 lookup worked
#   Failed test 'ES - 56 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 424 - ES - 57 lookup worked
#   Failed test 'ES - 57 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 425 - ES - 58 lookup worked
#   Failed test 'ES - 58 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 426 - ES - 59 lookup worked
#   Failed test 'ES - 59 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
not ok 427 - ES - 60 lookup worked
#   Failed test 'ES - 60 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Madrid'
ok 428 - GL - 01 lookup worked
ok 429 - GL - 02 lookup worked
not ok 430 - GL - 03 lookup worked
#   Failed test 'GL - 03 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Godthab'
ok 431 - ID - 01 lookup worked
ok 432 - ID - 02 lookup worked
ok 433 - ID - 03 lookup worked
ok 434 - ID - 04 lookup worked
ok 435 - ID - 05 lookup worked
ok 436 - ID - 06 lookup worked
ok 437 - ID - 07 lookup worked
ok 438 - ID - 08 lookup worked
ok 439 - ID - 09 lookup worked
ok 440 - ID - 10 lookup worked
ok 441 - ID - 11 lookup worked
ok 442 - ID - 12 lookup worked
ok 443 - ID - 13 lookup worked
ok 444 - ID - 14 lookup worked
ok 445 - ID - 15 lookup worked
ok 446 - ID - 16 lookup worked
ok 447 - ID - 17 lookup worked
ok 448 - ID - 18 lookup worked
ok 449 - ID - 19 lookup worked
ok 450 - ID - 20 lookup worked
not ok 451 - ID - 21 lookup worked
#   Failed test 'ID - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 452 - ID - 22 lookup worked
#   Failed test 'ID - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 453 - ID - 23 lookup worked
#   Failed test 'ID - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 454 - ID - 24 lookup worked
#   Failed test 'ID - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jakarta'
not ok 455 - ID - 25 lookup worked
#   Failed test 'ID - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Pontianak'
not ok 456 - ID - 26 lookup worked
#   Failed test 'ID - 26 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Pontianak'
not ok 457 - ID - 28 lookup worked
#   Failed test 'ID - 28 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jayapura'
not ok 458 - ID - 29 lookup worked
#   Failed test 'ID - 29 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 459 - ID - 30 lookup worked
#   Failed test 'ID - 30 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jakarta'
not ok 460 - ID - 31 lookup worked
#   Failed test 'ID - 31 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 461 - ID - 32 lookup worked
#   Failed test 'ID - 32 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jakarta'
not ok 462 - ID - 33 lookup worked
#   Failed test 'ID - 33 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jakarta'
not ok 463 - ID - 34 lookup worked
#   Failed test 'ID - 34 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 464 - ID - 35 lookup worked
#   Failed test 'ID - 35 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Pontianak'
not ok 465 - ID - 36 lookup worked
#   Failed test 'ID - 36 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jayapura'
not ok 466 - ID - 37 lookup worked
#   Failed test 'ID - 37 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Pontianak'
not ok 467 - ID - 38 lookup worked
#   Failed test 'ID - 38 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
not ok 468 - ID - 39 lookup worked
#   Failed test 'ID - 39 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Jayapura'
not ok 469 - ID - 40 lookup worked
#   Failed test 'ID - 40 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Pontianak'
not ok 470 - ID - 41 lookup worked
#   Failed test 'ID - 41 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Makassar'
ok 471 - KZ - 01 lookup worked
ok 472 - KZ - 02 lookup worked
ok 473 - KZ - 03 lookup worked
ok 474 - KZ - 04 lookup worked
ok 475 - KZ - 05 lookup worked
ok 476 - KZ - 06 lookup worked
ok 477 - KZ - 07 lookup worked
ok 478 - KZ - 08 lookup worked
ok 479 - KZ - 09 lookup worked
not ok 480 - KZ - 10 lookup worked
#   Failed test 'KZ - 10 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Qyzylorda'
not ok 481 - KZ - 11 lookup worked
#   Failed test 'KZ - 11 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Almaty'
not ok 482 - KZ - 12 lookup worked
#   Failed test 'KZ - 12 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Qyzylorda'
not ok 483 - KZ - 13 lookup worked
#   Failed test 'KZ - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Aqtobe'
not ok 484 - KZ - 14 lookup worked
#   Failed test 'KZ - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Qyzylorda'
not ok 485 - KZ - 15 lookup worked
#   Failed test 'KZ - 15 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Almaty'
not ok 486 - KZ - 16 lookup worked
#   Failed test 'KZ - 16 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Aqtobe'
not ok 487 - KZ - 17 lookup worked
#   Failed test 'KZ - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Almaty'
ok 488 - MN - 06 lookup worked
ok 489 - MN - 11 lookup worked
ok 490 - MN - 17 lookup worked
ok 491 - MN - 19 lookup worked
not ok 492 - MN - 20 lookup worked
#   Failed test 'MN - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Ulaanbaatar'
not ok 493 - MN - 21 lookup worked
#   Failed test 'MN - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Ulaanbaatar'
not ok 494 - MN - 25 lookup worked
#   Failed test 'MN - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Ulaanbaatar'
ok 495 - MX - 01 lookup worked
ok 496 - MX - 02 lookup worked
ok 497 - MX - 03 lookup worked
ok 498 - MX - 04 lookup worked
ok 499 - MX - 05 lookup worked
ok 500 - MX - 06 lookup worked
ok 501 - MX - 07 lookup worked
ok 502 - MX - 08 lookup worked
ok 503 - MX - 09 lookup worked
ok 504 - MX - 10 lookup worked
ok 505 - MX - 11 lookup worked
ok 506 - MX - 12 lookup worked
ok 507 - MX - 13 lookup worked
ok 508 - MX - 14 lookup worked
ok 509 - MX - 15 lookup worked
ok 510 - MX - 16 lookup worked
not ok 511 - MX - 17 lookup worked
#   Failed test 'MX - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 512 - MX - 18 lookup worked
#   Failed test 'MX - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mazatlan'
not ok 513 - MX - 19 lookup worked
#   Failed test 'MX - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Monterrey'
not ok 514 - MX - 20 lookup worked
#   Failed test 'MX - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 515 - MX - 21 lookup worked
#   Failed test 'MX - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 516 - MX - 22 lookup worked
#   Failed test 'MX - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 517 - MX - 23 lookup worked
#   Failed test 'MX - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Cancun'
not ok 518 - MX - 24 lookup worked
#   Failed test 'MX - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 519 - MX - 25 lookup worked
#   Failed test 'MX - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mazatlan'
not ok 520 - MX - 26 lookup worked
#   Failed test 'MX - 26 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Hermosillo'
not ok 521 - MX - 27 lookup worked
#   Failed test 'MX - 27 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Merida'
not ok 522 - MX - 28 lookup worked
#   Failed test 'MX - 28 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Monterrey'
not ok 523 - MX - 29 lookup worked
#   Failed test 'MX - 29 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 524 - MX - 30 lookup worked
#   Failed test 'MX - 30 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Mexico_City'
not ok 525 - MX - 31 lookup worked
#   Failed test 'MX - 31 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Merida'
not ok 526 - MX - 32 lookup worked
#   Failed test 'MX - 32 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'America/Monterrey'
ok 527 - MY - 01 lookup worked
ok 528 - MY - 02 lookup worked
ok 529 - MY - 03 lookup worked
ok 530 - MY - 04 lookup worked
ok 531 - MY - 05 lookup worked
ok 532 - MY - 06 lookup worked
ok 533 - MY - 07 lookup worked
ok 534 - MY - 08 lookup worked
not ok 535 - MY - 09 lookup worked
#   Failed test 'MY - 09 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuala_Lumpur'
not ok 536 - MY - 11 lookup worked
#   Failed test 'MY - 11 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuching'
not ok 537 - MY - 12 lookup worked
#   Failed test 'MY - 12 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuala_Lumpur'
not ok 538 - MY - 13 lookup worked
#   Failed test 'MY - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuala_Lumpur'
not ok 539 - MY - 14 lookup worked
#   Failed test 'MY - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuala_Lumpur'
not ok 540 - MY - 15 lookup worked
#   Failed test 'MY - 15 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuching'
not ok 541 - MY - 16 lookup worked
#   Failed test 'MY - 16 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Kuching'
ok 542 - NZ - 85 lookup worked
ok 543 - NZ - E7 lookup worked
ok 544 - NZ - E8 lookup worked
ok 545 - NZ - E9 lookup worked
ok 546 - NZ - F1 lookup worked
ok 547 - NZ - F2 lookup worked
ok 548 - NZ - F3 lookup worked
ok 549 - NZ - F4 lookup worked
not ok 550 - NZ - F5 lookup worked
#   Failed test 'NZ - F5 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 551 - NZ - F6 lookup worked
#   Failed test 'NZ - F6 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 552 - NZ - F7 lookup worked
#   Failed test 'NZ - F7 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Chatham'
not ok 553 - NZ - F8 lookup worked
#   Failed test 'NZ - F8 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 554 - NZ - F9 lookup worked
#   Failed test 'NZ - F9 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 555 - NZ - G1 lookup worked
#   Failed test 'NZ - G1 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 556 - NZ - G2 lookup worked
#   Failed test 'NZ - G2 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
not ok 557 - NZ - G3 lookup worked
#   Failed test 'NZ - G3 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Pacific/Auckland'
ok 558 - PT - 02 lookup worked
ok 559 - PT - 03 lookup worked
ok 560 - PT - 04 lookup worked
ok 561 - PT - 05 lookup worked
ok 562 - PT - 06 lookup worked
ok 563 - PT - 07 lookup worked
ok 564 - PT - 08 lookup worked
ok 565 - PT - 09 lookup worked
ok 566 - PT - 10 lookup worked
ok 567 - PT - 11 lookup worked
not ok 568 - PT - 13 lookup worked
#   Failed test 'PT - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 569 - PT - 14 lookup worked
#   Failed test 'PT - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 570 - PT - 16 lookup worked
#   Failed test 'PT - 16 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 571 - PT - 17 lookup worked
#   Failed test 'PT - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 572 - PT - 18 lookup worked
#   Failed test 'PT - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 573 - PT - 19 lookup worked
#   Failed test 'PT - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 574 - PT - 20 lookup worked
#   Failed test 'PT - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 575 - PT - 21 lookup worked
#   Failed test 'PT - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 576 - PT - 22 lookup worked
#   Failed test 'PT - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Lisbon'
not ok 577 - PT - 23 lookup worked
#   Failed test 'PT - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Atlantic/Azores'
ok 578 - RU - 01 lookup worked
ok 579 - RU - 02 lookup worked
ok 580 - RU - 03 lookup worked
ok 581 - RU - 04 lookup worked
ok 582 - RU - 05 lookup worked
ok 583 - RU - 06 lookup worked
ok 584 - RU - 07 lookup worked
ok 585 - RU - 08 lookup worked
ok 586 - RU - 09 lookup worked
ok 587 - RU - 10 lookup worked
ok 588 - RU - 11 lookup worked
ok 589 - RU - 12 lookup worked
ok 590 - RU - 13 lookup worked
ok 591 - RU - 14 lookup worked
ok 592 - RU - 15 lookup worked
ok 593 - RU - 16 lookup worked
ok 594 - RU - 17 lookup worked
ok 595 - RU - 18 lookup worked
ok 596 - RU - 20 lookup worked
ok 597 - RU - 21 lookup worked
ok 598 - RU - 22 lookup worked
ok 599 - RU - 23 lookup worked
ok 600 - RU - 24 lookup worked
ok 601 - RU - 25 lookup worked
ok 602 - RU - 26 lookup worked
ok 603 - RU - 27 lookup worked
ok 604 - RU - 28 lookup worked
ok 605 - RU - 29 lookup worked
ok 606 - RU - 30 lookup worked
ok 607 - RU - 31 lookup worked
ok 608 - RU - 32 lookup worked
ok 609 - RU - 33 lookup worked
ok 610 - RU - 34 lookup worked
ok 611 - RU - 35 lookup worked
ok 612 - RU - 36 lookup worked
ok 613 - RU - 37 lookup worked
ok 614 - RU - 38 lookup worked
ok 615 - RU - 39 lookup worked
ok 616 - RU - 40 lookup worked
ok 617 - RU - 41 lookup worked
ok 618 - RU - 42 lookup worked
ok 619 - RU - 43 lookup worked
ok 620 - RU - 44 lookup worked
ok 621 - RU - 45 lookup worked
ok 622 - RU - 46 lookup worked
ok 623 - RU - 47 lookup worked
not ok 624 - RU - 48 lookup worked
#   Failed test 'RU - 48 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 625 - RU - 49 lookup worked
#   Failed test 'RU - 49 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 626 - RU - 50 lookup worked
#   Failed test 'RU - 50 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 627 - RU - 51 lookup worked
#   Failed test 'RU - 51 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 628 - RU - 52 lookup worked
#   Failed test 'RU - 52 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 629 - RU - 53 lookup worked
#   Failed test 'RU - 53 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Novosibirsk'
not ok 630 - RU - 54 lookup worked
#   Failed test 'RU - 54 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Omsk'
not ok 631 - RU - 55 lookup worked
#   Failed test 'RU - 55 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 632 - RU - 56 lookup worked
#   Failed test 'RU - 56 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 633 - RU - 57 lookup worked
#   Failed test 'RU - 57 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 634 - RU - 58 lookup worked
#   Failed test 'RU - 58 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 635 - RU - 59 lookup worked
#   Failed test 'RU - 59 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Vladivostok'
not ok 636 - RU - 60 lookup worked
#   Failed test 'RU - 60 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Kaliningrad'
not ok 637 - RU - 61 lookup worked
#   Failed test 'RU - 61 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Volgograd'
not ok 638 - RU - 62 lookup worked
#   Failed test 'RU - 62 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 639 - RU - 63 lookup worked
#   Failed test 'RU - 63 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yakutsk'
not ok 640 - RU - 64 lookup worked
#   Failed test 'RU - 64 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Sakhalin'
not ok 641 - RU - 65 lookup worked
#   Failed test 'RU - 65 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 642 - RU - 66 lookup worked
#   Failed test 'RU - 66 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 643 - RU - 67 lookup worked
#   Failed test 'RU - 67 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 644 - RU - 68 lookup worked
#   Failed test 'RU - 68 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Volgograd'
not ok 645 - RU - 69 lookup worked
#   Failed test 'RU - 69 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 646 - RU - 70 lookup worked
#   Failed test 'RU - 70 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Volgograd'
not ok 647 - RU - 71 lookup worked
#   Failed test 'RU - 71 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 648 - RU - 72 lookup worked
#   Failed test 'RU - 72 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 649 - RU - 73 lookup worked
#   Failed test 'RU - 73 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 650 - RU - 74 lookup worked
#   Failed test 'RU - 74 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Krasnoyarsk'
not ok 651 - RU - 75 lookup worked
#   Failed test 'RU - 75 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Novosibirsk'
not ok 652 - RU - 76 lookup worked
#   Failed test 'RU - 76 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 653 - RU - 77 lookup worked
#   Failed test 'RU - 77 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 654 - RU - 78 lookup worked
#   Failed test 'RU - 78 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 655 - RU - 79 lookup worked
#   Failed test 'RU - 79 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Irkutsk'
not ok 656 - RU - 80 lookup worked
#   Failed test 'RU - 80 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 657 - RU - 81 lookup worked
#   Failed test 'RU - 81 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Samara'
not ok 658 - RU - 82 lookup worked
#   Failed test 'RU - 82 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Irkutsk'
not ok 659 - RU - 83 lookup worked
#   Failed test 'RU - 83 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 660 - RU - 84 lookup worked
#   Failed test 'RU - 84 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Volgograd'
not ok 661 - RU - 85 lookup worked
#   Failed test 'RU - 85 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 662 - RU - 86 lookup worked
#   Failed test 'RU - 86 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 663 - RU - 87 lookup worked
#   Failed test 'RU - 87 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Novosibirsk'
not ok 664 - RU - 88 lookup worked
#   Failed test 'RU - 88 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Moscow'
not ok 665 - RU - 89 lookup worked
#   Failed test 'RU - 89 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Vladivostok'
not ok 666 - RU - 90 lookup worked
#   Failed test 'RU - 90 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Yekaterinburg'
not ok 667 - RU - 91 lookup worked
#   Failed test 'RU - 91 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Krasnoyarsk'
not ok 668 - RU - 92 lookup worked
#   Failed test 'RU - 92 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Anadyr'
not ok 669 - RU - 93 lookup worked
#   Failed test 'RU - 93 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Irkutsk'
ok 670 - UA - 01 lookup worked
ok 671 - UA - 02 lookup worked
ok 672 - UA - 03 lookup worked
ok 673 - UA - 04 lookup worked
ok 674 - UA - 05 lookup worked
ok 675 - UA - 06 lookup worked
ok 676 - UA - 07 lookup worked
ok 677 - UA - 08 lookup worked
ok 678 - UA - 09 lookup worked
ok 679 - UA - 10 lookup worked
ok 680 - UA - 11 lookup worked
ok 681 - UA - 12 lookup worked
ok 682 - UA - 13 lookup worked
ok 683 - UA - 14 lookup worked
not ok 684 - UA - 15 lookup worked
#   Failed test 'UA - 15 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Uzhgorod'
not ok 685 - UA - 16 lookup worked
#   Failed test 'UA - 16 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Zaporozhye'
not ok 686 - UA - 17 lookup worked
#   Failed test 'UA - 17 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Simferopol'
not ok 687 - UA - 18 lookup worked
#   Failed test 'UA - 18 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Zaporozhye'
not ok 688 - UA - 19 lookup worked
#   Failed test 'UA - 19 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Kiev'
not ok 689 - UA - 20 lookup worked
#   Failed test 'UA - 20 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Simferopol'
not ok 690 - UA - 21 lookup worked
#   Failed test 'UA - 21 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Kiev'
not ok 691 - UA - 22 lookup worked
#   Failed test 'UA - 22 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Uzhgorod'
not ok 692 - UA - 23 lookup worked
#   Failed test 'UA - 23 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Kiev'
not ok 693 - UA - 24 lookup worked
#   Failed test 'UA - 24 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Uzhgorod'
not ok 694 - UA - 25 lookup worked
#   Failed test 'UA - 25 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Uzhgorod'
not ok 695 - UA - 26 lookup worked
#   Failed test 'UA - 26 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Zaporozhye'
not ok 696 - UA - 27 lookup worked
#   Failed test 'UA - 27 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Europe/Kiev'
ok 697 - UZ - 01 lookup worked
ok 698 - UZ - 02 lookup worked
ok 699 - UZ - 03 lookup worked
ok 700 - UZ - 05 lookup worked
ok 701 - UZ - 06 lookup worked
ok 702 - UZ - 07 lookup worked
not ok 703 - UZ - 08 lookup worked
#   Failed test 'UZ - 08 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Samarkand'
not ok 704 - UZ - 09 lookup worked
#   Failed test 'UZ - 09 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Samarkand'
not ok 705 - UZ - 10 lookup worked
#   Failed test 'UZ - 10 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Samarkand'
not ok 706 - UZ - 12 lookup worked
#   Failed test 'UZ - 12 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Samarkand'
not ok 707 - UZ - 13 lookup worked
#   Failed test 'UZ - 13 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Tashkent'
not ok 708 - UZ - 14 lookup worked
#   Failed test 'UZ - 14 lookup worked'
#   at test.pl line 12.
#          got: undef
#     expected: 'Asia/Tashkent'
ok 709 - TL -  lookup worked
ok 710 - PF -  lookup worked
ok 711 - SX -  lookup worked
ok 712 - BQ -  lookup worked
ok 713 - CW -  lookup worked
ok 714 - AQ -  lookup worked
ok 715 - BV -  lookup worked
ok 716 - FM -  lookup worked
1..716
# Looks like you failed 237 tests of 716.

As far as the regions go, I am not sure why those exact numbers were used to generate the region number. I assume it is produce a unique mapping.

@gvanem
Copy link
Author

gvanem commented Aug 14, 2015

Looks like your script only fails on some countries with multiple regions and time-zones.

Seem I've misunderstood some details in rewriting generate_timeZone.pl to Python. Did you write it?
Just an idea; maybe the region string-test should be case-insensitive:

.. !strcasecmp(region,element->tz_regions[i+REGION]))

or just a memcmp()could be used for speed.

@gvanem
Copy link
Author

gvanem commented Aug 14, 2015

I will try to do a similar rewrite of regioncode/generate_regionName.pl.

I now also have a working (?) Python script for generating libGeoIP/regionName.c. It's here. I'm not sure about the lookup-logic in the original generate_reionName.pl script. I simplified this into:

 lookup_code2 = 100*get_code2(country_code) + get_code2(region_code);

Was that the original intention?

@oschwald
Copy link
Member

I don't think it is a case sensitivity issue. The script takes the country and region from the timezone.txt file and tests them without modification.

I did not write the region script.

@elliotlo
Copy link

elliotlo commented Sep 3, 2015

Hi all, I use Visual Studio 2015 and suffer the same problem like @gvanem .
so I modified generate_regionName.pl and generate_timeZone.pl to avoid the parsing error.
I still use if-else condition, but return the result immediately. Also moved region code into subroutine.
I'm a newbie in Perl, but it work for me.

generate_regionName.pl
generate_timeZone.pl

@oschwald
Copy link
Member

oschwald commented Sep 3, 2015

How can I reproduce this error? I'd like to get this automatically tested by our Windows CI. I tried to reproduce it in AppVeyor but both the x86 and x64 builds seem to work fine using nmake.

oschwald added a commit that referenced this issue Sep 3, 2015
This is based off of updated scripts from elliotlo in GitHub issue #64.

This should fix a parser stack overflow issue that was reported in
MSVC.
oschwald added a commit that referenced this issue Sep 3, 2015
This is based off of updated scripts from elliotlo in GitHub issue #64.

This should fix a parser stack overflow issue that was reported in
MSVC.
@elliotlo
Copy link

elliotlo commented Sep 4, 2015

I created a empty project for geoip. Build it by Visual Studio 2015 Community Version IDE,
I think it caused by some different configuration.
This is my project, you can try it.

oschwald added a commit that referenced this issue Oct 30, 2015
Segfault Fix, More Safety Checks, Windows Fixes

* Fixed a MSVC parser stack overflow when parsing `regionName.c` and
 `timeZone.c`. Fix by elliotlo. GitHub #64.
* Updated region codes and timezones.
* When using `GEOIP_MEMORY_CACHE` with an invalid database file, the search
  tree traversal could attempt to read memory outside of the memory allocated
  for the memory cache, resulting in a segmentation fault. A check was added
  to ensure that the traversal code does not try to read beyond the end of the
  file, whether in memory, memory mapped, or on disk.
* Previously the return values from file reads were ignored. We now check
  these values to ensure that there were no errors.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

Successfully merging a pull request may close this issue.

3 participants