--- job.c~	2010-08-12 14:57:15.000000000 +0200
+++ job.c	2010-08-12 14:58:23.000000000 +0200
@@ -2876,7 +2876,7 @@ construct_command_argv_internal (char *l
       }
 
     new_line = alloca (shell_len + 1 + sflags_len + 1
-                             + (line_len*2) + 1);
+                             + (line_len*4) + 1);
     ap = new_line;
     memcpy (ap, shell, shell_len);
     ap += shell_len;
@@ -2904,13 +2904,14 @@ construct_command_argv_internal (char *l
 #endif
 	    if (PRESERVE_BSNL)
 	      {
-		*(ap++) = '\\';
+		*(ap++) = '\'';
 		/* Only non-batch execution needs another backslash,
 		   because it will be passed through a recursive
 		   invocation of this function.  */
 		if (!batch_mode_shell)
 		  *(ap++) = '\\';
 		*(ap++) = '\n';
+		*(ap++) = '\'';
 	      }
 	    ++p;
 	    continue;

Diff finished.  Thu Aug 12 14:58:34 2010
