# HG changeset patch # User Daniel Atallah # Date 1228183579 0 # Node ID ef70bcdae73f1544ee70789a5c71188990097cb9 # Parent 3cae90524840442cd8f072e47c7f992c8981a35a (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs. I modified it to use g_return_val_if_reached() because we need to track down and fix the places where invalid fds are being used. Fixes #7608 diff -r 3cae90524840 -r ef70bcdae73f libpurple/win32/libc_interface.c --- a/libpurple/win32/libc_interface.c Mon Dec 01 23:58:58 2008 +0000 +++ b/libpurple/win32/libc_interface.c Tue Dec 02 02:06:19 2008 +0000 @@ -351,6 +351,11 @@ int wpurple_read(int fd, void *buf, unsigned int size) { int ret; + if (fd < 0) { + errno = EBADF; + g_return_val_if_reached(-1); + } + if(wpurple_is_socket(fd)) { if((ret = recv(fd, buf, size, 0)) == SOCKET_ERROR) { errno = WSAGetLastError(); @@ -391,6 +396,11 @@ int wpurple_write(int fd, const void *buf, unsigned int size) { + if (fd < 0) { + errno = EBADF; + g_return_val_if_reached(-1); + } + if(wpurple_is_socket(fd)) return wpurple_send(fd, buf, size, 0); else @@ -413,6 +423,11 @@ int wpurple_close(int fd) { int ret; + if (fd < 0) { + errno = EBADF; + g_return_val_if_reached(-1); + } + if( wpurple_is_socket(fd) ) { if( (ret = closesocket(fd)) == SOCKET_ERROR ) { errno = WSAGetLastError();