Mercurial > pidgin.yaz
view libpurple/win32/targets.mak @ 23995:85bed17fe5c1
The variable we use to keep track of the watcher of the ssl connection
should be unsigned. This isn't really a problem in Pidgin, where we
use glib's mainloop and GIOChannels because glib starts assigning the
handle IDs sequentially starting from 1.
But if an eventloop implementation ever returns a handle ID greater
than the largest possible signed integer (2,147,483,647) then we
won't be able to remove the watcher because purple_ssl_close() in
sslconn.c only removes it if inpa > 0, and since it interprets inpa
as a signed value then handles over 2,147,483,647 appear as negative
numbers.
I stumbled upon this when playing around with libevent, which can
use epoll. My implementation generated a random handle ID which
was sometimes greater than 2,147,483,647.
I don't believe this breaks binary compatibility. And I don't think
it breaks source compatibility, but I guess it might depend on what
compiler you're using.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 04 Sep 2008 18:04:29 +0000 |
parents | 57f5337a9c28 |
children | 006e2e385631 |
line wrap: on
line source
# # targets.mak # # This file should be included at the end of all Makefile.mingw # files for better handling of cross directory dependencies # $(PIDGIN_CONFIG_H): $(PIDGIN_CONFIG_H).mingw $(PIDGIN_TREE_TOP)/configure.ac sed -e 's/@VERSION@/$(PIDGIN_VERSION)/; s/@DISPLAY_VERSION@/$(DISPLAY_VERSION)/' $@.mingw > $@ $(PURPLE_PURPLE_H): $(PURPLE_PURPLE_H).in sed -e 's/@PLUGINS_DEFINE@/#define PURPLE_PLUGINS 1/' $@.in > $@ $(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in $(PIDGIN_TREE_TOP)/configure.ac awk 'BEGIN {FS="[\\(\\)\\[\\]]"} \ /^m4_define..purple_major_version/ {system("sed -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $@.in > $@");} \ /^m4_define..purple_minor_version/ {system("sed -e s/@PURPLE_MINOR_VERSION@/"$$5"/ $@ > $@.tmp & mv $@.tmp $@");} \ /^m4_define..purple_micro_version/ {system("sed -e s/@PURPLE_MICRO_VERSION@/"$$5"/ $@ > $@.tmp & mv $@.tmp $@"); exit}' $(PIDGIN_TREE_TOP)/configure.ac $(PURPLE_DLL) $(PURPLE_DLL).a: $(PURPLE_VERSION_H) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) libpurple.dll $(PURPLE_PERL_DLL) $(PURPLE_PERL_DLL).a: $(MAKE) -C $(PURPLE_PERL_TOP) -f $(MINGW_MAKEFILE) perl.dll $(PIDGIN_DLL) $(PIDGIN_DLL).a: $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.dll $(PIDGIN_IDLETRACK_DLL) $(PIDGIN_IDLETRACK_DLL).a: $(MAKE) -C $(PIDGIN_IDLETRACK_TOP) -f $(MINGW_MAKEFILE) idletrack.dll $(PIDGIN_EXE): $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.exe # Installation Directories $(PIDGIN_INSTALL_DIR): mkdir -p $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_PERLMOD_DIR): mkdir -p $(PURPLE_INSTALL_PERLMOD_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR): mkdir -p $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR): mkdir -p $(PURPLE_INSTALL_PO_DIR)