X*TextPropertyToTextList: handle OOM situation
The X{mb,wc,utf8}TextPropertyToTextList family of functions returns the text properties in form of a list in given pointer "list_return".
If the allocation of list_return fails, the functions currently still return a value of 0 or higher, implying that conversion was successful.
The manual page states that XNoMemory is returned if insufficient memory is available for the list or its elements. Therefore I have adjusted the code to match the API description.
How to reproduce:
The easiest way is to modify alloc_list src/xlibi18n/lcPrTxt.c to always return NULL. Use a tool like cwm (calmwm) on OpenBSD and try to start it. It leads to a NULL pointer dereference because it trusts the return value of Xutf8TextPropertyToTextList.
A portable version of cwm exists: https://github.com/leahneukirchen/cwm
Otherwise WebRTC in chromium and firefox might use the function as well when capturing the desktop. But cwm is easier to debug/reproduce. ;)