#752294 optipng -backup loses .bak symlink when the target doesn't exist

Package:
optipng
Source:
optipng
Description:
advanced PNG (Portable Network Graphics) optimizer
Submitter:
Vincent Lefevre
Date:
2014-06-22 09:48:05 UTC
Severity:
normal
#752294#5
Date:
2014-06-22 09:44:43 UTC
From:
To:
When using the -backup option, if the .bak file is a symbolic link
pointing to a non-existing target, OptiPNG 0.7.5 transforms this
symbolic link to a normal file, losing the symbolic link itself.

This can be reproduced with:
------------------------------------------------------------------
#!/bin/sh

prefix=symlinktest.$$

base64 -d > $prefix.1.png <<EOF
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQAAAACkhYXAAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC
AK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAJiS0dE
AAHdihOkAAAACW9GRnMAAAEfAAACiQBnGPpYAAAACXBIWXMAAABgAAAAYADwa0LPAAAACXZwQWcA
AAH1AAADKACp4S7kAAAADElEQVQI12NgGFkAAADwAAHXt5aiAAAAJXRFWHRkYXRlOmNyZWF0ZQAy
MDE0LTA2LTIyVDExOjE0OjQyKzAyOjAw2bjiaQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNi0y
MlQxMToxNDo0MiswMjowMKjlWtUAAAAZdEVYdFNvZnR3YXJlAGdub21lLXNjcmVlbnNob3TvA78+
AAAAAElFTkSuQmCC
EOF

cp $prefix.1.png $prefix.2.png
touch $prefix.3.png
ln -s $prefix.3.png $prefix.1.png.bak
rm -f $prefix.4.png
ln -s $prefix.4.png $prefix.2.png.bak

ls -l $prefix.*
optipng -backup $prefix.1.png
optipng -backup $prefix.2.png
ls -l $prefix.*

rm $prefix.*
------------------------------------------------------------------

I get, for instance: