After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 134813 - g_slist_remove_all export from gobject DLL
g_slist_remove_all export from gobject DLL
Status: RESOLVED FIXED
Product: glib
Classification: Platform
Component: win32
2.3.x
Other Windows
: Normal normal
: ---
Assigned To: Tor Lillqvist
Tor Lillqvist
Depends on:
Blocks:
 
 
Reported: 2004-02-19 07:08 UTC by J. Ali Harlow
Modified: 2011-02-18 16:07 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Test case (781 bytes, patch)
2004-03-01 17:27 UTC, J. Ali Harlow
none Details | Review

Description J. Ali Harlow 2004-02-19 07:08:16 UTC
It appears that, at least in my linux-x-mingw32 binaries, the
gobject DLL created from glib 2.2.3 exported g_slist_remove_all
(see gobject.def). Obviously this was a bug which has now been
corrected in 2.3.2. The problem is that any programs which were
built against glib 2.2.3 look for that symbol in the gobject DLL
and not in the glib DLL. This causes them to fail to run if glib
(and the gobject DLL) is upgraded.
Comment 1 Tor Lillqvist 2004-02-24 01:42:38 UTC
I think g_slist_remove_all should be added back to gobject.def for 
bug compatibility. 2.4.0 probably won't be usable as such on Windows 
anyway, so setting milestone to 2.4.1.
Comment 2 J. Ali Harlow 2004-02-24 08:46:59 UTC
What makes you believe that glib 2.4.0 won't be useable under Windows?

I'm using glib 2.3.2 quite happily in the application I'm currently
writing (gtk+ 2.3.2 won't even build, but that's another matter).
Comment 3 Tor Lillqvist 2004-02-24 21:16:03 UTC
> What makes you believe that glib 2.4.0 won't be useable under 
Windows?

Oh, it was just a wild guess, based on my impression that some API 
has been added recently, but the corresponding entries haven't been 
added to the .def files for instance. And the g_child_watch stuff 
hasn't been implemented yet for Windows, and the current source in 
fact contains for instance calls waitpid() and uses SIGCHLD without 
any ifdefs.

(I have been extremely busy at work lately, and really not had any 
time for glib etc hacking at home for many weeks.)
Comment 4 Hans Breuer 2004-02-26 00:30:06 UTC
To the original report:
IMO providing bug compatibility is absolutely unnecessary, at least if
the function was only exported in the unstable 2.3.x series. So I'm
suggesting to close as WONTFIX 
Comment 5 J. Ali Harlow 2004-02-26 06:19:31 UTC
Sadly it's not that easy. The problem is that version 2.2.3 (and
probably the rest of the 2.2.x stable series) exported the symbol in
error. This only came to light with version 2.3.2, but if nothing is
done the 2.4.x series will be incompatible with the 2.2.x series.

I'm hoping to persuade Tor that this should be fixed for 2.4.0 (or not
at all) otherwise 2.4.0 and 2.4.1 may end up being incompatible with
each other (not sure whether the same problem will manifest itself in
reverse). To this end I have submitted patches to address the two
issues which Tor states would have caused 2.4.0 to be unusable under
Windows. I realize this still leaves quite a bit of work to do and
therefore may not be enough to achieve my goal.
Comment 6 Tor Lillqvist 2004-03-01 06:01:00 UTC
> providing bug compatibility is absolutely unnecessary, 
> at least if the function was only exported in the 
> unstable 2.3.x series.

No, it has been exported in the stable series for a long time.

(BTW, are we sure that programs that use g_slist_remove_all(), and 
import it from the gobject DLL, actually work? I don't know how such 
a "redirected import" is implemented in a DLL. Maybe it works fine. 
None of the test programs in glib use g_slist_remove_all().)
Comment 7 J. Ali Harlow 2004-03-01 17:26:56 UTC
> (BTW, are we sure that programs that use g_slist_remove_all(), and 
> import it from the gobject DLL, actually work? I don't know how such 
> a "redirected import" is implemented in a DLL. Maybe it works fine. 
> None of the test programs in glib use g_slist_remove_all().)

I can confirm that this does work. I used the attached patch to check.
Comment 8 J. Ali Harlow 2004-03-01 17:27:59 UTC
Created attachment 24982 [details] [review]
Test case
Comment 9 Tor Lillqvist 2004-03-01 20:49:59 UTC
Fixed:

2004-03-01  Tor Lillqvist  <tml@iki.fi>

* gobject.def: Add g_slist_remove_all back for ABI
compatibility. That entry point actually is in the glib DLL, but
it was at some time many years ago by mistake added to
gobject.def. Thus there presumably are executables out there that
expect it to be exported from the gobject DLL. We don't want to
break those. (#134813, J. Ali Harlow)