--- source/common/uloc.c 2011-12-12 04:50:00.601092000 -0500 +++ source/common/uloc.c 2011-12-12 04:56:18.503570000 -0500 @@ -1712,7 +1712,7 @@ /* Check for EURO variants. */ sawEuro = _deleteVariant(variant, variantSize, "EURO", 4); len -= sawEuro; - if (sawEuro > 0 && name[len-1] == '_') { /* delete trailing '_' */ + if (sawEuro > 0 && len > 0 && name[len-1] == '_') { /* delete trailing '_' */ --len; }