I think there is a semantic difference between return NULL or "". NULL means there was an error (if strdup returns NULL it means it can't allocate memory, so it is definitely an error), while "" means all was good, but there is nothing to print. As a user of the `r_table_tofancystring` API it is important to distinguish the two things.