--- misc/hunspell-1.2.9/src/hunspell/hunspell.cxx 2010-03-04 10:25:06.000000000 +0000 +++ misc/build/hunspell-1.2.9/src/hunspell/hunspell.cxx 2010-03-04 10:25:38.000000000 +0000 @@ -1665,7 +1665,7 @@ if (!q2) return 0; // bad XML input if (check_xml_par(q, "type=", "analyze")) { int n = 0, s = 0; - if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN)) n = analyze(slst, cw); + if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1)) n = analyze(slst, cw); if (n == 0) return 0; // convert the result to ana1ana2 format for (int i = 0; i < n; i++) s+= strlen((*slst)[i]); @@ -1686,13 +1686,13 @@ (*slst)[0] = r; return 1; } else if (check_xml_par(q, "type=", "stem")) { - if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN)) return stem(slst, cw); + if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1)) return stem(slst, cw); } else if (check_xml_par(q, "type=", "generate")) { - int n = get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN); + int n = get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1); if (n == 0) return 0; char * q3 = strstr(q2 + 1, "'), MAXWORDUTF8LEN)) { + if (get_xml_par(cw2, strchr(q3, '>'), MAXWORDUTF8LEN - 1)) { return generate(slst, cw, cw2); } } else {