On Thu, Mar 08, 2007 at 10:10:28AM -0500, Tom Lane wrote:
> Magnus Hagander <[EMAIL PROTECTED]> writes:
> > So I suggest the following simple patch.. Any objections?
>
> One wonders if we need DllMain() at all any more. We certainly don't
> need that switch statement ...
Indeed. Looking even more into it (sheesh, I really didn't do my
homework here), libpqdll.c isn't even *compiled* on mingw. Or on the new
MSVC build. It's only compiled on the old msvc build. Given that, we can
probably just delete the file.
> Also, isn't the WSACleanup() in freePGconn in the wrong place? Seems
> like it shouldn't be done until after we've closed the socket. I'd
> be inclined to put it at the bottom of the routine.
Certainly looks wrong. It's interesting how this could have worked
*before*. That's a clear indication that it really doesn't appear to
matter much what we do here :S
The patch would then look something like this, and a remove of
libpqdll.c.
//Magnus
Index: bcc32.mak
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/libpq/bcc32.mak,v
retrieving revision 1.26
diff -c -r1.26 bcc32.mak
*** bcc32.mak 11 Jan 2007 02:42:31 -0000 1.26
--- bcc32.mak 8 Mar 2007 15:23:17 -0000
***************
*** 93,99 ****
[EMAIL PROTECTED] "$(INTDIR)\fe-secure.obj"
[EMAIL PROTECTED] "$(INTDIR)\pqexpbuffer.obj"
[EMAIL PROTECTED] "$(INTDIR)\pqsignal.obj"
- [EMAIL PROTECTED] "$(OUTDIR)\libpqdll.obj"
[EMAIL PROTECTED] "$(OUTDIR)\win32.obj"
[EMAIL PROTECTED] "$(INTDIR)\wchar.obj"
[EMAIL PROTECTED] "$(INTDIR)\encnames.obj"
--- 93,98 ----
***************
*** 155,168 ****
LINK32=ilink32.exe
LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
- LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
# @<< is a Response file, http://www.opussoftware.com/tutorial/TutMakefile.htm
! "$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" $(LINK32_OBJS)
"$(INTDIR)\libpq.res" blibpqdll.def
$(LINK32) @<<
$(LINK32_FLAGS) +
! c0d32.obj $(LINK32_OBJS), +
$@,, +
"$(OUTDIR)\blibpq.lib" import32.lib cw32mt.lib, +
blibpqdll.def,"$(INTDIR)\libpq.res"
--- 154,166 ----
LINK32=ilink32.exe
LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
# @<< is a Response file, http://www.opussoftware.com/tutorial/TutMakefile.htm
! "$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" "$(INTDIR)\libpq.res"
blibpqdll.def
$(LINK32) @<<
$(LINK32_FLAGS) +
! c0d32.obj , +
$@,, +
"$(OUTDIR)\blibpq.lib" import32.lib cw32mt.lib, +
blibpqdll.def,"$(INTDIR)\libpq.res"
Index: fe-connect.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.344
diff -c -r1.344 fe-connect.c
*** fe-connect.c 20 Feb 2007 15:20:51 -0000 1.344
--- fe-connect.c 8 Mar 2007 15:16:58 -0000
***************
*** 1840,1848 ****
#ifdef WIN32
/*
! * Make sure socket support is up and running. Even though this is done
in
! * libpqdll.c, that is only for MSVC and BCC builds and doesn't work for
! * static builds at all, so we have to do it in the main code too.
*/
WSADATA wsaData;
--- 1840,1846 ----
#ifdef WIN32
/*
! * Make sure socket support is up and running.
*/
WSADATA wsaData;
***************
*** 1918,1927 ****
PGnotify *notify;
pgParameterStatus *pstatus;
- #ifdef WIN32
- WSACleanup();
- #endif
-
if (!conn)
return;
--- 1916,1921 ----
***************
*** 1986,1991 ****
--- 1980,1989 ----
termPQExpBuffer(&conn->errorMessage);
termPQExpBuffer(&conn->workBuffer);
free(conn);
+
+ #ifdef WIN32
+ WSACleanup();
+ #endif
}
/*
Index: win32.mak
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/libpq/win32.mak,v
retrieving revision 1.43
diff -c -r1.43 win32.mak
*** win32.mak 11 Jan 2007 02:42:31 -0000 1.43
--- win32.mak 8 Mar 2007 15:22:29 -0000
***************
*** 63,69 ****
[EMAIL PROTECTED] "$(INTDIR)\fe-secure.obj"
[EMAIL PROTECTED] "$(INTDIR)\pqexpbuffer.obj"
[EMAIL PROTECTED] "$(INTDIR)\pqsignal.obj"
- [EMAIL PROTECTED] "$(OUTDIR)\libpqdll.obj"
[EMAIL PROTECTED] "$(OUTDIR)\win32.obj"
[EMAIL PROTECTED] "$(INTDIR)\wchar.obj"
[EMAIL PROTECTED] "$(INTDIR)\encnames.obj"
--- 63,68 ----
***************
*** 143,149 ****
/pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386
/out:"$(OUTDIR)\$(OUTFILENAME).dll"\
/implib:"$(OUTDIR)\$(OUTFILENAME)dll.lib" /def:$(OUTFILENAME)dll.def
LINK32_OBJS= \
- "$(INTDIR)\libpqdll.obj" \
"$(OUTDIR)\$(OUTFILENAME).lib" \
"$(OUTDIR)\libpq.res"
--- 142,147 ----
***************
*** 159,165 ****
$(RSC) $(RSC_PROJ) libpq.rc
! "$(OUTDIR)\$(OUTFILENAME).dll" : "$(OUTDIR)" "$(OUTDIR)\libpqdll.obj"
"$(INTDIR)\libpqdll.obj" "$(INTDIR)\libpq.res"
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
--- 157,163 ----
$(RSC) $(RSC_PROJ) libpq.rc
! "$(OUTDIR)\$(OUTFILENAME).dll" : "$(OUTDIR)" "$(INTDIR)\libpq.res"
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend