I don't see any reason for it. When it was added, it was replacing open-coded malloc+memcpy sequences. But I don't know why the normal implementation could not have been used. Name space issues might mean we should only use __strdup here, but that could have been done at the time local_strdup was added too.