Clear memory in smartlist_remove_keeporder.
The smartlist functions take great care to reset unused pointers inside the smartlist memory to NULL.
The function smartlist_remove_keeporder does not clear memory in such way when elements have been removed. Therefore call memset after the for-loop that removes elements. If no element is removed, it is effectively a no-op.