Que se passe-t-il si la destination et la source pointent vers le même objet ?
strlcpy()
ne fait pas partie de la bibliothèque standard du langage C. Sa fonctionnalité précise peut varier d'un compilateur à l'autre. Consultez la documentation du compilateur/de la bibliothèque concerné(e) pour obtenir la meilleure réponse.
Dans le cadre des systèmes BSD, strlcpy(3) - Page de manuel Linux Je n'ai trouvé aucune disposition interdisant le chevauchement.
Depuis C99, le mot-clé restrict
permet de répondre à la question "Que se passe-t-il si la destination et la source pointent vers le même objet ?
Si la signature est la suivante, il suffit d'utiliser destination, source
qui font référence à des données qui se chevauchent est comportement non défini . Tout peut arriver.
size_t strlcpy(char * restrict destination, const char * restrict source, size_t size);
Si la signature est la suivante et que le compilateur est conforme à la norme C99 ou à une norme ultérieure, l'utilisation de destination, source
qui peuvent se chevaucher est un comportement défini.
Si la signature est la suivante et que le compilateur n'est pas conforme à la norme C99 ou à une norme plus récente, l'utilisation de destination, source
qui peuvent se chevaucher est susceptible comportement non défini à moins que la documentation ne traite de ce cas.
size_t strlcpy(char * destination, const char *source, size_t size);