The Exec paths in these files already refer to absolute paths, infact, /gnu/store paths
Thus the regex:
("^Exec=([^/[:blank:]\r\n]*)(.*)$" _ binary rest)
with binary = empty string and rest = everything after Exec=
Why? The second subexpression [^/[:blank:]\r\n]* is bound to binary, but it means anything
that is a series of anything that is not /, space, or newline. absolute paths start with /, so it matches nothing (empty string), and continues to call (which "").
I notice this phase hasn't been edited in 5 years and has other issues, for example:
1. patch-dot-desktop-files only searches the output of the package for paths, not the inputs. This means for example xfce4-settings fails to patch references to exo-open in desktop files.
The code should be remade to be more /correct/, and handle all unexpected inputs. In this case the phase is accidentally doing the right thing by failing in a harmless way and correctly not patching the files, but emitting a warning.