One thing I don't like about the current definition of ZLE_CHAR_T is that, in the non-multibyte code, you don't end up with a ZLE_STRING_T if you take the address of a ZLE_CHAR_T variable (due to ZLE_CHAR_T being an "int" and ZLE_STRING_T being an "unsigned char *"). Since we have a ZLE_INT_T for those variables that need to be able to hold a ZLEEOF value, I thought it would be cleaner to change ZLE_CHAR_T. For my first try, I changed ZLE_CHAR_T into an "unsigned char", which caused a bunch of problems with comparisons against char constants, such as "Comma", because the strings in the rest of zsh are based on "char", not "unsigned char". I then decided to change ZLE_CHAR_T to be a "char" and to also change ZLE_STRING_T into a "char *". This change worked with just a few other tweaks to the code, and all the tests pass. However, I won't commit this until I hear some assent that this is a desired change. Attached is the patch. ..wayne..