Symptôme
0x80070781 (ERROR_INVALID_REPARSE_DATA) sur "Nouveau fichier" dans l'Explorateur Windows après une synchronisation.
Root cause
Commit bfada8e (#151) ajoutait ConvertToPlaceholder avant SetSyncState dans ActionDownload/ActionCopy, mais ignorait silencieusement l'erreur (_ = pm.ConvertToPlaceholder(...)). Si la conversion échouait, SetSyncState était quand même appelé sur un non-placeholder, écrivant des données de reparse point CF invalides → 0x80070781 sur les opérations suivantes.
Fix
internal/sync/dispatcher.go — placeholderOK guard :
- Si
ConvertToPlaceholder retourne une erreur, émettre sync:warn et sauter SetSyncState entièrement.
SetSyncState sur un non-placeholder est la source de la corruption CF — l'ignorer n'est pas sûr.
Tests
TestDispatcher_ActionDownload_ConvertBeforeSetSync, TestDispatcher_ActionCopy_ConvertBeforeSetSync
Symptôme
0x80070781(ERROR_INVALID_REPARSE_DATA) sur "Nouveau fichier" dans l'Explorateur Windows après une synchronisation.Root cause
Commit
bfada8e(#151) ajoutaitConvertToPlaceholderavantSetSyncStatedansActionDownload/ActionCopy, mais ignorait silencieusement l'erreur (_ = pm.ConvertToPlaceholder(...)). Si la conversion échouait,SetSyncStateétait quand même appelé sur un non-placeholder, écrivant des données de reparse point CF invalides → 0x80070781 sur les opérations suivantes.Fix
internal/sync/dispatcher.go—placeholderOKguard :ConvertToPlaceholderretourne une erreur, émettresync:warnet sauterSetSyncStateentièrement.SetSyncStatesur un non-placeholder est la source de la corruption CF — l'ignorer n'est pas sûr.Tests
TestDispatcher_ActionDownload_ConvertBeforeSetSync,TestDispatcher_ActionCopy_ConvertBeforeSetSync