Bugfixes
authorMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 27 Oct 2006 06:09:44 +0000 (06:09 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 27 Oct 2006 06:09:44 +0000 (06:09 +0000)
mmsoftware/js/classes/js_pgsql.c

index c09f584..57f151d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: js_pgsql.c,v 1.11 2006/10/19 06:08:12 mmondor Exp $ */
+/* $Id: js_pgsql.c,v 1.12 2006/10/27 06:09:44 mmondor Exp $ */
 
 /*
  * Copyright (c) 2006, Matthew Mondor
@@ -886,7 +886,8 @@ static JSBool
 pg_sm_PQresStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       char    *res;
+       char            *res;
+       JSString        *str;
 
        if (argc != 1) {
                QUEUE_EXCEPTION("Wrong number of arguments");
@@ -898,7 +899,11 @@ pg_sm_PQresStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        }
 
        res = PQresStatus(JSVAL_TO_INT(argv[0]));
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, res));
+       if ((str = JS_NewStringCopyZ(cx, res)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               goto err;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 
@@ -1123,8 +1128,9 @@ static JSBool
 pgconn_m_PQdb(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1136,7 +1142,12 @@ pgconn_m_PQdb(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQdb(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1145,8 +1156,9 @@ static JSBool
 pgconn_m_PQuser(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1158,7 +1170,12 @@ pgconn_m_PQuser(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQuser(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1167,8 +1184,9 @@ static JSBool
 pgconn_m_PQpass(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1180,7 +1198,12 @@ pgconn_m_PQpass(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQpass(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1189,8 +1212,9 @@ static JSBool
 pgconn_m_PQhost(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1202,7 +1226,12 @@ pgconn_m_PQhost(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQhost(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1211,8 +1240,9 @@ static JSBool
 pgconn_m_PQport(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1224,7 +1254,12 @@ pgconn_m_PQport(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQport(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1233,8 +1268,9 @@ static JSBool
 pgconn_m_PQtty(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1246,7 +1282,12 @@ pgconn_m_PQtty(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQtty(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1255,8 +1296,9 @@ static JSBool
 pgconn_m_PQoptions(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1268,7 +1310,12 @@ pgconn_m_PQoptions(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQoptions(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -1340,8 +1387,15 @@ pgconn_m_PQparameterStatus(JSContext *cx, JSObject *obj, uintN argc,
        pgc = JS_GetInstancePrivate(cx, obj, &pgconn_class, NULL);
        assert(pgc != NULL);
 
-       if ((str = PQparameterStatus(pgc, param)) != NULL)
-               *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((str = PQparameterStatus(pgc, param)) != NULL) {
+               JSString        *jstr;
+
+               if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+                       QUEUE_EXCEPTION("Internal error!");
+                       return JS_FALSE;
+               }
+               *rval = STRING_TO_JSVAL(jstr);
+       }
 
        return JS_TRUE;
 }
@@ -1394,8 +1448,9 @@ static JSBool
 pgconn_m_PQerrorMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
-       PGconn  *pgc;
-       char    *str;
+       PGconn          *pgc;
+       char            *str;
+       JSString        *jstr;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -1407,7 +1462,12 @@ pgconn_m_PQerrorMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgc != NULL);
 
        str = PQerrorMessage(pgc);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
+       if ((jstr = JS_NewStringCopyZ(cx, str)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(jstr);
 
        return JS_TRUE;
 }
@@ -3469,7 +3529,7 @@ pgconn_m_lo_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
                goto err;
        }
 
-       if ((str = JS_NewStringCopyN(cx, buffer, (size_t)size)) == NULL) {
+       if ((str = JS_NewStringCopyN(cx, buffer, (size_t)ret)) == NULL) {
                QUEUE_EXCEPTION("Out of memory!");
                goto err;
        }
@@ -3665,9 +3725,10 @@ pgresult_m_PQclear(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
 {
        PGresult        *pgr;
 
+       *rval = OBJECT_TO_JSVAL(NULL);
+
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
-               *rval = OBJECT_TO_JSVAL(NULL);
                return JS_FALSE;
        }
 
@@ -3681,8 +3742,6 @@ pgresult_m_PQclear(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
                        js_map_remove(omap);
        }
 
-       *rval = OBJECT_TO_JSVAL(NULL);
-
        return JS_TRUE;
 }
 
@@ -3714,6 +3773,7 @@ pgresult_m_PQresultErrorMessage(JSContext *cx, JSObject *obj, uintN argc,
 {
        PGresult        *pgr;
        char            *res;
+       JSString        *str;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -3725,7 +3785,12 @@ pgresult_m_PQresultErrorMessage(JSContext *cx, JSObject *obj, uintN argc,
        assert(pgr != NULL);
 
        res = PQresultErrorMessage(pgr);
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, res));
+       if ((str = JS_NewStringCopyZ(cx, res)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 }
@@ -3736,6 +3801,7 @@ pgresult_m_PQresultErrorField(JSContext *cx, JSObject *obj, uintN argc,
 {
        PGresult        *pgr;
        char            *res;
+       JSString        *str;
 
        if (argc != 1) {
                QUEUE_EXCEPTION("Wrong number of arguments");
@@ -3750,7 +3816,12 @@ pgresult_m_PQresultErrorField(JSContext *cx, JSObject *obj, uintN argc,
        assert(pgr != NULL);
 
        res = PQresultErrorField(pgr, JSVAL_TO_INT(argv[0]));
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, res));
+       if ((str = JS_NewStringCopyZ(cx, res)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 
@@ -3810,6 +3881,7 @@ pgresult_m_PQfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
 {
        PGresult        *pgr;
        char            *res;
+       JSString        *str;
 
        if (argc != 1) {
                QUEUE_EXCEPTION("Wrong number of arguments");
@@ -3824,7 +3896,11 @@ pgresult_m_PQfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        assert(pgr != NULL);
 
        res = PQfname(pgr, JSVAL_TO_INT(argv[0]));
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, res));
+       if ((str = JS_NewStringCopyZ(cx, res)) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               goto err;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 
@@ -4159,6 +4235,7 @@ pgresult_m_PQgetisnull(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
        PGresult        *pgr;
+       JSBool          v;
 
        if (argc != 2) {
                QUEUE_EXCEPTION("Wrong number of arguments");
@@ -4176,8 +4253,8 @@ pgresult_m_PQgetisnull(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        pgr = JS_GetInstancePrivate(cx, obj, &pgresult_class, NULL);
        assert(pgr != NULL);
 
-       *rval = BOOLEAN_TO_JSVAL(PQgetisnull(pgr, JSVAL_TO_INT(argv[0]),
-           JSVAL_TO_INT(argv[1])));
+       v = PQgetisnull(pgr, JSVAL_TO_INT(argv[0]), JSVAL_TO_INT(argv[1]));
+       *rval = BOOLEAN_TO_JSVAL(v);
 
        return JS_TRUE;
 
@@ -4226,6 +4303,7 @@ pgresult_m_PQcmdStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
        PGresult        *pgr;
+       JSString        *str;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -4236,7 +4314,12 @@ pgresult_m_PQcmdStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        pgr = JS_GetInstancePrivate(cx, obj, &pgresult_class, NULL);
        assert(pgr != NULL);
 
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, PQcmdStatus(pgr)));
+       if ((str = JS_NewStringCopyZ(cx, PQcmdStatus(pgr))) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 }
@@ -4249,6 +4332,7 @@ pgresult_m_PQcmdTuples(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
     jsval *rval)
 {
        PGresult        *pgr;
+       JSString        *str;
 
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
@@ -4259,7 +4343,12 @@ pgresult_m_PQcmdTuples(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
        pgr = JS_GetInstancePrivate(cx, obj, &pgresult_class, NULL);
        assert(pgr != NULL);
 
-       *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, PQcmdTuples(pgr)));
+       if ((str = JS_NewStringCopyZ(cx, PQcmdTuples(pgr))) == NULL) {
+               QUEUE_EXCEPTION("Internal error!");
+               *rval = OBJECT_TO_JSVAL(NULL);
+               return JS_FALSE;
+       }
+       *rval = STRING_TO_JSVAL(str);
 
        return JS_TRUE;
 }
@@ -4522,9 +4611,10 @@ pgcancel_m_PQfreeCancel(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
 {
        PGcancel        *pgc;
 
+       *rval = OBJECT_TO_JSVAL(NULL);
+
        if (argc != 0) {
                QUEUE_EXCEPTION("Function allows no arguments");
-               *rval = OBJECT_TO_JSVAL(NULL);
                return JS_FALSE;
        }
 
@@ -4534,7 +4624,6 @@ pgcancel_m_PQfreeCancel(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
                (void) JS_SetPrivate(cx, obj, NULL);
        }
 
-       *rval = OBJECT_TO_JSVAL(NULL);
 
        return JS_TRUE;
 }