Change the version. We are moving towards the next release.
authorD'Arcy J.M. Cain
Wed, 19 Sep 2001 18:58:47 +0000 (18:58 +0000)
committerD'Arcy J.M. Cain
Wed, 19 Sep 2001 18:58:47 +0000 (18:58 +0000)
Fixed a nasty bug that messed up negative money amounts.

src/interfaces/python/pgmodule.c

index 38ae733b9a4ec33fb4652e5bbd34d262e8fac6ed..52d10b7ba8738388ecd92a4da02fe96b3310175f 100644 (file)
@@ -36,7 +36,7 @@
 #include 
 
 static PyObject *PGError;
-static const char *PyPgVersion = "3.2";
+static const char *PyPgVersion = "3.3";
 
 /* taken from fileobject.c */
 #define BUF(v) PyString_AS_STRING((PyStringObject *)(v))
@@ -1844,21 +1844,32 @@ pgquery_getresult(pgqueryobject * self, PyObject * args)
                        val = PyFloat_FromDouble(strtod(s, NULL));
                        break;
 
-                   case 3:     /* get rid of the '$' and commas */
+                   case 3:
+                   {
+                       int mult = 1;
+
                        if (*s == '$')  /* there's talk of getting rid of
                                         * it */
                            s++;
 
-                       if ((s[0] == '-' || s[0] == '(') && s[1] == '$')
-                           *(++s) = '-';
+                       if (*s == '-' || *s == '(')
+                       {
+                           s++;
+                           mult = -1;
+                       }
+
+                       /* get rid of the '$' and commas */
+                       if (*s == '$')  /* Just in case we exposed one */
+                           s++;
 
                        for (k = 0; *s; s++)
                            if (*s != ',')
                                cashbuf[k++] = *s;
 
                        cashbuf[k] = 0;
-                       val = PyFloat_FromDouble(strtod(cashbuf, NULL));
+                       val = PyFloat_FromDouble(strtod(cashbuf, NULL) * mult);
                        break;
+                   }
 
                    default:
                        val = PyString_FromString(s);
@@ -1980,21 +1991,32 @@ pgquery_dictresult(pgqueryobject * self, PyObject * args)
                        val = PyFloat_FromDouble(strtod(s, NULL));
                        break;
 
-                   case 3:     /* get rid of the '$' and commas */
+                   case 3:
+                   {
+                       int mult = 1;
+
                        if (*s == '$')  /* there's talk of getting rid of
                                         * it */
                            s++;
 
-                       if ((s[0] == '-' || s[0] == '(') && s[1] == '$')
-                           *(++s) = '-';
+                       if (*s == '-' || *s == '(')
+                       {
+                           s++;
+                           mult = -1;
+                       }
+
+                       /* get rid of the '$' and commas */
+                       if (*s == '$')  /* Just in case we exposed one */
+                           s++;
 
                        for (k = 0; *s; s++)
                            if (*s != ',')
                                cashbuf[k++] = *s;
 
                        cashbuf[k] = 0;
-                       val = PyFloat_FromDouble(strtod(cashbuf, NULL));
+                       val = PyFloat_FromDouble(strtod(cashbuf, NULL) * mult);
                        break;
+                   }
 
                    default:
                        val = PyString_FromString(s);