$ x='\001\177'; printf %q ${x@E}
$'\001\001\001\177'
Probably just needs:
--- a/subst.c
+++ b/subst.c
@@ -7253,7 +7253,7 @@ string_transform (xc, v, s)
break;
/* Transformations that modify the variable's value */
case 'E':
- ret = ansiexpand (s, 0, strlen (s), (int *)0);
+ ret = dequote_escapes(ansiexpand (s, 0, strlen (s), (int *)0));
break;
case 'P':
ret = decode_prompt_string (s);
