[quote user="Loren"]Here's the API Doc[/quote]
If a StringList stores 8-bit chars internally, then mdlStringList_getMember can't give you a pointer to a 16-bit string, because there is none. It could convert the 8-bit to a 16-bit internally, but the pointer it hands to you would point to an out-of-scope internal variable (which, come to think of it, would lead to the sort of corruption you observe).
Try the new function mdlStringList_getMemberString, which gives you a 16-bit string wrapped in a WString object. Whether or not I'm right about the internal storage, that guarantees you a wide string to use.