Author: rfm
Date: Thu Jun 23 18:04:00 2016
New Revision: 39913
URL: http://svn.gna.org/viewcvs/gnustep?rev=39913&view=rev
Log:
more error checks
Modified:
libs/sqlclient/trunk/Postgres.m
Modified: libs/sqlclient/trunk/Postgres.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/sqlclient/trunk/Postgres.m?rev=39913&r1=39912&r2=39913&view=diff
==============================================================================
--- libs/sqlclient/trunk/Postgres.m (original)
+++ libs/sqlclient/trunk/Postgres.m Thu Jun 23 18:04:00 2016
@@ -514,7 +514,9 @@
{
if (connection != 0)
{
- [runLoop removeEvent: (void*)(uintptr_t)PQsocket(connection)
+ int descriptor = PQsocket(connection);
+
+ [runLoop removeEvent: (void*)(uintptr_t)descriptor
type: ET_RDESC
forMode: NSDefaultRunLoopMode
all: YES];
@@ -746,16 +748,28 @@
#if defined(GNUSTEP_BASE_LIBRARY) && !defined(__MINGW__)
if (extra != 0 && connection != 0)
{
+ int descriptor = PQsocket(connection);
+
if (nil == runLoop)
{
ASSIGN(runLoop, [NSRunLoop currentRunLoop]);
+ if (nil == runLoop)
+ {
+ [NSException raise: NSInternalInconsistencyException
+ format: @"Observer can't be set up ... no runloop in thread"];
+ }
}
else if ([NSRunLoop currentRunLoop] != runLoop)
{
[NSException raise: NSInternalInconsistencyException
format: @"Observer added to the same client from another runloop"];
}
- [runLoop addEvent: (void*)(uintptr_t)PQsocket(connection)
+ if (descriptor < 0)
+ {
+ [NSException raise: NSInternalInconsistencyException
+ format: @"Observer can't be set up ... bad file descriptor"];
+ }
+ [runLoop addEvent: (void*)(uintptr_t)descriptor
type: ET_RDESC
watcher: self
forMode: NSDefaultRunLoopMode];
@@ -1235,7 +1249,9 @@
{
if (connection != 0)
{
- [runLoop removeEvent: (void*)(uintptr_t)PQsocket(connection)
+ int descriptor = PQsocket(connection);
+
+ [runLoop removeEvent: (void*)(uintptr_t)descriptor
type: ET_RDESC
forMode: NSDefaultRunLoopMode
all: YES];
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs