On Sun, Dec 14, 2008 at 01:23:48AM -0800, Chip Salzenberg wrote:
> On Sat, Dec 13, 2008 at 11:19:23PM -0800, Jan Dubois wrote:
> > On Sat, 13 Dec 2008, Nicholas Clark wrote:
> > > Given the only changes from last night's PASS in blead was 35082, it has 
> > > to
> > > be the cause. Presumably [...]
> > > But I have no idea what, as the smoke client doesn't provide a log for 
> > > this.
> > > I guess we wait until Monday, unless anyone else can run a Win32 build.
> > 
> > Change 35082 is indeed the culprit.  The problem is using conditional 
> > compilation
> > inside a preprocessor macro call:
> > 
> > ..\doio.c(854) : warning C4002: too many actual parameters for macro 
> > 'do_open'
> > ..\doio.c(854) : error C2121: '#' : invalid character : possibly the result 
> > of a macro expansion
> > ..\doio.c(854) : error C2065: 'ifdef' : undeclared identifier
> > ..\doio.c(854) : error C2146: syntax error : missing ')' before identifier 
> > 'VMS'
> > [...]
> 
> Oh dear.  It seems to have escaped me that do_open() could be a macro.
> 
> How's this for a fix?

I'd actually just applied the appended alternative.

Nicholas Clark

Change 35088 by nicho...@nicholas-saigo on 2008/12/14 09:26:00

        Fix change 35082 by manually expanding do_open() to Perl_do_openn().

Affected files ...

... //depot/perl/doio.c#380 edit

Differences ...

==== //depot/perl/doio.c#380 (text) ====

@@ -845,14 +845,14 @@
 
                sv_setpvn(sv,PL_oldname,oldlen);
                SETERRNO(0,0);          /* in case sprintf set errno */
-               if (!do_open(PL_argvoutgv,(char*)SvPVX_const(sv),SvCUR(sv),TRUE,
+               if (!Perl_do_openn(aTHX_ PL_argvoutgv, (char*)SvPVX_const(sv),
+                                  SvCUR(sv), TRUE,
 #ifdef VMS
-                            O_WRONLY|O_CREAT|O_TRUNC,0,
+                                  O_WRONLY|O_CREAT|O_TRUNC,0,
 #else
-                            O_WRONLY|O_CREAT|OPEN_EXCL,0600,
+                                  O_WRONLY|O_CREAT|OPEN_EXCL,0600,
 #endif
-                            NULL))
-               {
+                                  NULL, NULL, 0)) {
                    if (ckWARN_d(WARN_INPLACE)) 
                        Perl_warner(aTHX_ packWARN(WARN_INPLACE), "Can't do 
inplace edit on %s: %s",
                          PL_oldname, Strerror(errno) );

Reply via email to