Merge PR #602: fix: prevent data loss in clipboard PNG conversion when ImageMagick fails

Authored by 0xbyt4. Only deletes temp .bmp after confirmed successful conversion, restores original on failure. Adds 3 tests.
This commit is contained in:
teknium1 2026-03-10 04:15:05 -07:00
commit 5e6c7bc205
2 changed files with 49 additions and 1 deletions

View file

@ -292,9 +292,12 @@ def _convert_to_png(path: Path) -> bool:
["convert", str(tmp), "png:" + str(path)],
capture_output=True, timeout=5,
)
tmp.unlink(missing_ok=True)
if r.returncode == 0 and path.exists() and path.stat().st_size > 0:
tmp.unlink(missing_ok=True)
return True
else:
# Convert failed — restore the original file
tmp.rename(path)
except FileNotFoundError:
logger.debug("ImageMagick not installed — cannot convert BMP to PNG")
if tmp.exists() and not path.exists():