PATCH - PgVersion_New error handling

Andrew McNamara <[email protected]> Fri, 27 Apr 2007 20:48:38 +1000
Newsgroups gmane.comp.python.db.pypgsql.user
Message-ID <[email protected]>
This is a multipart MIME message.

--==_Exmh_1177670899_23000
Content-Type: text/plain; charset=us-ascii

Attached is a patch against the CVS HEAD that fixes the error handling in
PgVersion_New. The main problems were that NULL returns from pg_strtok_r
were not being handled in many cases, and the early exit path was calling
PyObject_Del (via PgVersion_dealloc), which skips some finalisation that
should occur in Py_DECREF (this mainly effects debug builds of Python).

The patch also deletes the unused pgstricmp function, and uses
PyType_Ready to initialise the type (this is probably not necessary,
as PgVersion_Type isn't a subclass, but it doesn't hurt).

I also considered making PgVersion cyclic GC aware, but there doesn't
appear to be any way it can be involved in a reference cycle.

-- 
Andrew McNamara, Senior Developer, Object Craft
http://www.object-craft.com.au/


--==_Exmh_1177670899_23000
Content-Type: application/octet-stream ; name="pgversionfix-patch"
Content-Description: pgversionfix-patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pgversionfix-patch"

SW5kZXg6IHBndmVyc2lvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3B5
cGdzcWwvcHlwZ3NxbC9wZ3ZlcnNpb24uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApk
aWZmIC11IC1yMS4yNCBwZ3ZlcnNpb24uYwotLS0gcGd2ZXJzaW9uLmMJMiBKdW4gMjAwNiAx
NDoyNzo0NSAtMDAwMAkxLjI0CisrKyBwZ3ZlcnNpb24uYwkyNyBBcHIgMjAwNyAxMDozMzo0
MSAtMDAwMApAQCAtMTIwLDM5ICsxMjAsNiBAQAogfSBQZ1ZlcnNpb247CiAKIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKlwKLXwgTmFtZToJCXBnc3RyaWNtcAkJCQkJCXwKLXwgU3lub3BzaXM6CWlu
dCBwZ3N0cmljbXAoY2hhciAqczEsIGNoYXIgKnMyKTsJCQl8Ci18IERlc2NyaXB0aW9uOglw
Z3N0cmljbXAgY29tcGFyZXMgaXRzIGFyZ3VtZW50cyAoaWdub3JpbmcgY2FzZSkgYW5kIAl8
Ci18CQlyZXR1cm5zIGFuIGludGVnZXIgbGVzcyB0aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRl
ciB0aGFuCXwKLXwJCTAsIGJhc2VkIHVwb24gd2hldGhlciBzMSBpcyBsZXhpY29ncmFwaGlj
YWxseSBsZXNzCXwKLXwJCXRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gczIuCQkJ
fAotfAkJCQkJCQkJCXwKLXwgTm90ZToJCUNoYXJhY3RlcnMgZm9sbG93aW5nIGEgbnVsbCBj
aGFyYWN0ZXIgYXJlIG5vdCBjb21wYXJlZC4JfAotXCoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1z
dGF0aWMgaW50IHBnc3RyaWNtcChjaGFyICpzMSwgY2hhciAqczIpCi17Ci0gICAgaW50IGMx
ID0gMCwgYzIgPSAwOwotCi0gICAgZm9yICg7KCpzMSAhPSAwKSAmJiAoKnMyICE9IDApOyBz
MSsrLCBzMisrKQotICAgIHsKLQlpZiAoaXN1cHBlcigqczEpKQotCSAgICBjMSA9IHRvbG93
ZXIoKnMxKTsKLQllbHNlCi0JICAgIGMxID0gKnMxOwotCWlmIChpc3VwcGVyKCpzMikpCi0J
ICAgIGMyID0gdG9sb3dlcigqczIpOwotCWVsc2UKLQkgICAgYzIgPSAqczI7Ci0KLQlpZiAo
YzEgIT0gYzIpCi0JICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiAoYzEgLSBjMik7
Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKlwKIHwgTmFtZToJCXBhcnNlVG9rZW4JCQkJCQl8
CiB8CQkJCQkJCQkJfAogfCBTeW5vcHNpczoJaWYgKHBhcnNlVG9rZW4odG9rZW4sIHJlc3Vs
dCkpIHsuLi5lcnJvciBoYW5kbGluZy4uLn0JfApAQCAtMjA4LDcgKzE3NSw3IEBACiAgICAg
UHlfWERFQ1JFRihzZWxmLT5wYXRjaCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5wb3N0NzAp
OwogICAgIFB5X1hERUNSRUYoc2VsZi0+dmFsdWUpOwotICAgIFB5T2JqZWN0X0RFTChzZWxm
KTsKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwpAQCAtMjIzLDExMSArMTkwLDkyIEBACiAgICAgbG9uZyBtYWpvciwgbWlub3IsIHBh
dGNoLCB2YWx1ZTsKIAogICAgIHNlbGYgPSAoUGdWZXJzaW9uICopUHlPYmplY3RfTmV3KFBn
VmVyc2lvbiwgJlBnVmVyc2lvbl9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKQorCXJl
dHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYpCisgICAgcyA9IChjaGFyICopUHlNZW1fU3Ry
ZHVwKHZlcnNpb24pOworICAgIGlmIChzID09IE5VTEwpCiAgICAgewotCXNhdmVfcHRyID0g
KGNoYXIgKilOVUxMOworCVB5X0RFQ1JFRihzZWxmKTsKKwlyZXR1cm4gTlVMTDsKKyAgICB9
CiAKLQlzZWxmLT52ZXJzaW9uID0gUHlfQnVpbGRWYWx1ZSgicyIsIHZlcnNpb24pOwotCXMg
PSAoY2hhciAqKVB5TWVtX1N0cmR1cCh2ZXJzaW9uKTsKLQlpZiAoKHNlbGYtPnZlcnNpb24g
PT0gKFB5T2JqZWN0ICopTlVMTCkgfHwgKHMgPT0gKGNoYXIgKilOVUxMKSkKLQl7Ci0JICAg
IFB5RXJyX05vTWVtb3J5KCk7Ci0JICAgIGdvdG8gbmV3X2Vycm9yOwotCX0KKyAgICBzZWxm
LT52ZXJzaW9uID0gTlVMTDsKKyAgICBzZWxmLT5tYWpvciA9IHNlbGYtPm1pbm9yID0gc2Vs
Zi0+cGF0Y2ggPSAoUHlPYmplY3QgKilOVUxMOyAKKyAgICBzZWxmLT52YWx1ZSA9IHNlbGYt
PnBvc3Q3MCA9IChQeU9iamVjdCAqKU5VTEw7CiAKLQlzZWxmLT5tYWpvciA9IHNlbGYtPm1p
bm9yID0gc2VsZi0+cGF0Y2ggPSAoUHlPYmplY3QgKilOVUxMOyAKLQlzZWxmLT52YWx1ZSA9
IHNlbGYtPnBvc3Q3MCA9IChQeU9iamVjdCAqKU5VTEw7CisgICAgc2VsZi0+dmVyc2lvbiA9
IFB5X0J1aWxkVmFsdWUoInMiLCB2ZXJzaW9uKTsKKyAgICBpZiAoc2VsZi0+dmVyc2lvbiA9
PSBOVUxMKQorCWdvdG8gbmV3X2Vycm9yOwogCi0JLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKLQl8IFBhcnNlIG91
dCB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSB2ZXJzaW9uIHN0cmluZy4JfAot
CXwgVGhlIGV4cGVjdGVkIGZvcm1hdCBpcyAnUG9zdGdyZVNRTCBNLm0ucCBvbiAuLi4nIHdo
ZXJlIE0gaXMJfAotCXwgdGhlIG1ham9yIG51bWJlciwgbSBpcyB0aGUgbWlub3IgbnVtYmVy
IGFuZCBwIGlzIHRoZSBwYXRjaAl8Ci0JfCBsZXZlbC4JCQkJCQkJfAotCVwqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Ci0KLQltYWpvciA9IG1pbm9yID0gcGF0Y2ggPSB2YWx1ZSA9IDA7Ci0KLQkvKiBQcmUtc2V0
IHRoZSBlcnJvciBjb25kaXRpb24uCi0JICogV2UnbGwgY2xlYXIgaXQgaWYgZXZlcnl0aGlu
ZydzIE9LCi0JICovCi0JUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0JCQki
SW52YWxpZCBmb3JtYXQgZm9yIFBnVmVyc2lvbiBjb25zdHJ1Y3Rpb24uIik7Ci0KLQotCXRv
a2VuID0gcGdfc3RydG9rX3IocywgIiBcdCIsICZzYXZlX3B0cik7Ci0JaWYgKHN0cmNtcCh0
b2tlbiwgIlBvc3RncmVTUUwiKSAhPSAwKQotCSAgICBnb3RvIG5ld19lcnJvcjsKLQotCXZz
dHIgPSBwZ19zdHJ0b2tfcigoY2hhciAqKU5VTEwsICIgXHQiLCAmc2F2ZV9wdHIpOwotCi0J
dG9rZW4gPSBwZ19zdHJ0b2tfcigoY2hhciAqKU5VTEwsICIgXHQiLCAmc2F2ZV9wdHIpOwot
CWlmIChzdHJjbXAodG9rZW4sICJvbiIpICE9IDApCi0JICAgIGdvdG8gbmV3X2Vycm9yOwot
Ci0JLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKlwKLQl8IFRoaXMgdGVzdCBpcyBpbiBjYXNlIHNvbWVvbmUgdHJpZXMg
dG8gY29tcGFyZXMgYWdhaW5zdCBhCXwKLQl8IHN0cmluZyBzdWNoIGFzICc3LjIgb24nLgkJ
CQkJfAotCVwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCi0KLQl0b2tlbiA9IHBnX3N0cnRva19yKChjaGFyICopTlVM
TCwgIiBcdCIsICZzYXZlX3B0cik7Ci0JaWYgKHN0cmNtcCh0b2tlbiwgIm9uIikgPT0gMCkK
LQkgICAgZ290byBuZXdfZXJyb3I7Ci0KLQkvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAotCXwgV2Ugbm93IGhhdmUg
dGhlIHZlcnNpb24gbnVtYmVyIChhcyBNLm0ucCkgaW4gdnN0ci4gIFBhcnNlIGl0Lgl8Ci0J
fCBOb3RlOiBUaGUgbWlub3IgbnVtYmVyIGFuZCBwYXRjaCBsZXZlbCBtYXkgbm90IGJlIHBy
ZXNlbnQuCXwKLQlcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLwotCi0Jc2F2ZV9wdHIgPSAoY2hhciAqKU5VTEw7Ci0K
LSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKlwKLSAgICAgICAgfCBWZW5kb3IgcmVsZWFzZXMgZS5nLiBm
cm9tIGRiZXhwZXJ0cyBnZXQgZm9yZ290dGVuLiAgICAgICAgICAgIHwKLSAgICAgICAgfCBX
ZSBzdHJpcCB0aGF0IGF3YXkgaGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLSAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotICAgICAgICB2c3RyID0gcGdfc3Ry
dG9rX3IodnN0ciwgIi0iLCAmc2F2ZV9wdHIpOwotICAgICAgICBzYXZlX3B0ciA9IChjaGFy
ICopTlVMTDsKLQotCXRva2VuID0gcGdfc3RydG9rX3IodnN0ciwgIi4iLCAmc2F2ZV9wdHIp
OwotCWlmIChwYXJzZVRva2VuKHRva2VuLCAmbWFqb3IpKQotCSAgICBnb3RvIG5ld19lcnJv
cjsKLQotCXRva2VuID0gcGdfc3RydG9rX3IoKGNoYXIgKilOVUxMLCAiLiIsICZzYXZlX3B0
cik7Ci0JaWYgKCh0b2tlbiAhPSAoY2hhciAqKU5VTEwpICYmICgqdG9rZW4gIT0gJ1wwJykg
JiYKLQkJCQkJCShwYXJzZVRva2VuKHRva2VuLCAmbWlub3IpKSkKLQkgICAgZ290byBuZXdf
ZXJyb3I7Ci0KLQl0b2tlbiA9IHBnX3N0cnRva19yKChjaGFyICopTlVMTCwgIi4tIiwgJnNh
dmVfcHRyKTsKLQlpZiAoKHRva2VuICE9IChjaGFyICopTlVMTCkgJiYgKCp0b2tlbiAhPSAn
XDAnKSAmJgotCSAgICAocGFyc2VUb2tlbih0b2tlbiwgJnBhdGNoKSkpCi0JewotCSAgICBn
b3RvIG5ld19lcnJvcjsKLQl9Ci0JCi0JdmFsdWUgPSAoKChtYWpvciAqIDEwMCkgKyBtaW5v
cikgKiAxMDApICsgcGF0Y2g7CisgICAgLyoKKyAgICAgKiBQYXJzZSBvdXQgdGhlIHZlcnNp
b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgdmVyc2lvbiBzdHJpbmcuCisgICAgICogVGhlIGV4
cGVjdGVkIGZvcm1hdCBpcyAnUG9zdGdyZVNRTCBNLm0ucCBvbiAuLi4nIHdoZXJlIE0gaXMK
KyAgICAgKiB0aGUgbWFqb3IgbnVtYmVyLCBtIGlzIHRoZSBtaW5vciBudW1iZXIgYW5kIHAg
aXMgdGhlIHBhdGNoCisgICAgICogbGV2ZWwuCisgICAgICovCisgICAgbWFqb3IgPSBtaW5v
ciA9IHBhdGNoID0gdmFsdWUgPSAwOwogCi0JLyogT0ssIHRoZSB2ZXJzaW9uIGluZm9ybWF0
aW9uIGhhcyBiZWVuIHBhcnNlZCwKLQkgKiBDbGVhciB0aGUgcHJlLXNldCBlcnJvcgotCSAq
LwotCSh2b2lkKVB5RXJyX0NsZWFyKCk7Ci0KLQkvKiBBbmQgYnVpbGQgdGhlIGF0dHJpYnV0
ZXMgKi8KLQlzZWxmLT5tYWpvciA9IFB5X0J1aWxkVmFsdWUoImkiLCBtYWpvcik7Ci0Jc2Vs
Zi0+bWlub3IgPSBQeV9CdWlsZFZhbHVlKCJpIiwgbWlub3IpOwotCXNlbGYtPnBhdGNoID0g
UHlfQnVpbGRWYWx1ZSgiaSIsIHBhdGNoKTsKLQlzZWxmLT52YWx1ZSA9IFB5X0J1aWxkVmFs
dWUoImkiLCB2YWx1ZSk7Ci0Jc2VsZi0+cG9zdDcwID0gUHlfQnVpbGRWYWx1ZSgiaSIsICgo
dmFsdWUgPj0gNzAxMDApID8gMWwgOiAwbCkpOwotCWlmIChQeUVycl9PY2N1cnJlZCgpKQot
CSAgICBnb3RvIG5ld19lcnJvcjsKLSAgICB9CisgICAgLyogUHJlLXNldCB0aGUgZXJyb3Ig
Y29uZGl0aW9uLiAgV2UnbGwgY2xlYXIgaXQgaWYgZXZlcnl0aGluZydzIE9LICovCisgICAg
UHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisJCSAgICAiSW52YWxpZCBmb3Jt
YXQgZm9yIFBnVmVyc2lvbiBjb25zdHJ1Y3Rpb24uIik7CisKKworICAgIHNhdmVfcHRyID0g
KGNoYXIgKilOVUxMOworICAgIHRva2VuID0gcGdfc3RydG9rX3IocywgIiBcdCIsICZzYXZl
X3B0cik7CisgICAgaWYgKHRva2VuID09IE5VTEwgfHwgc3RyY21wKHRva2VuLCAiUG9zdGdy
ZVNRTCIpICE9IDApCisJZ290byBuZXdfZXJyb3I7CisKKyAgICB2c3RyID0gcGdfc3RydG9r
X3IoKGNoYXIgKilOVUxMLCAiIFx0IiwgJnNhdmVfcHRyKTsKKworICAgIHRva2VuID0gcGdf
c3RydG9rX3IoKGNoYXIgKilOVUxMLCAiIFx0IiwgJnNhdmVfcHRyKTsKKyAgICBpZiAodG9r
ZW4gIT0gTlVMTCAmJiBzdHJjbXAodG9rZW4sICJvbiIpICE9IDApCisJZ290byBuZXdfZXJy
b3I7CisKKyAgICAvKgorICAgICAqIFZlbmRvciByZWxlYXNlcyBlLmcuIGZyb20gZGJleHBl
cnRzIGdldCBmb3Jnb3R0ZW4uCisgICAgICogV2Ugc3RyaXAgdGhhdCBhd2F5IGhlcmUuCisg
ICAgICovCisgICAgc2F2ZV9wdHIgPSAoY2hhciAqKU5VTEw7CisgICAgdnN0ciA9IHBnX3N0
cnRva19yKHZzdHIsICItIiwgJnNhdmVfcHRyKTsKKworICAgIC8qCisgICAgICogV2Ugbm93
IGhhdmUgdGhlIHZlcnNpb24gbnVtYmVyIChhcyBNLm0ucCkgaW4gdnN0ci4gIFBhcnNlIGl0
LgorICAgICAqIE5vdGU6IFRoZSBtaW5vciBudW1iZXIgYW5kIHBhdGNoIGxldmVsIG1heSBu
b3QgYmUgcHJlc2VudC4KKyAgICAgKi8KKyAgICBzYXZlX3B0ciA9IChjaGFyICopTlVMTDsK
KyAgICB0b2tlbiA9IHBnX3N0cnRva19yKHZzdHIsICIuIiwgJnNhdmVfcHRyKTsKKyAgICBp
ZiAodG9rZW4gPT0gTlVMTCB8fCBwYXJzZVRva2VuKHRva2VuLCAmbWFqb3IpKQorCWdvdG8g
bmV3X2Vycm9yOworCisgICAgdG9rZW4gPSBwZ19zdHJ0b2tfcigoY2hhciAqKU5VTEwsICIu
IiwgJnNhdmVfcHRyKTsKKyAgICBpZiAodG9rZW4gIT0gTlVMTCAmJiAqdG9rZW4gIT0gJ1ww
JyAmJiBwYXJzZVRva2VuKHRva2VuLCAmbWlub3IpKQorCWdvdG8gbmV3X2Vycm9yOworCisg
ICAgdG9rZW4gPSBwZ19zdHJ0b2tfcigoY2hhciAqKU5VTEwsICIuLSIsICZzYXZlX3B0cik7
CisgICAgaWYgKHRva2VuICE9IE5VTEwgJiYgKnRva2VuICE9ICdcMCcgJiYgcGFyc2VUb2tl
bih0b2tlbiwgJnBhdGNoKSkKKwlnb3RvIG5ld19lcnJvcjsKKworICAgIHZhbHVlID0gKCgo
bWFqb3IgKiAxMDApICsgbWlub3IpICogMTAwKSArIHBhdGNoOworCisgICAgLyogT0ssIHRo
ZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGhhcyBiZWVuIHBhcnNlZCwgQ2xlYXIgdGhlIHByZS1z
ZXQgZXJyb3IgKi8KKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogQW5kIGJ1aWxkIHRo
ZSBhdHRyaWJ1dGVzICovCisgICAgc2VsZi0+bWFqb3IgPSBQeV9CdWlsZFZhbHVlKCJpIiwg
bWFqb3IpOworICAgIHNlbGYtPm1pbm9yID0gUHlfQnVpbGRWYWx1ZSgiaSIsIG1pbm9yKTsK
KyAgICBzZWxmLT5wYXRjaCA9IFB5X0J1aWxkVmFsdWUoImkiLCBwYXRjaCk7CisgICAgc2Vs
Zi0+dmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJpIiwgdmFsdWUpOworICAgIHNlbGYtPnBvc3Q3
MCA9IFB5X0J1aWxkVmFsdWUoImkiLCB2YWx1ZSA+PSA3MDEwMCA/IDEgOiAwKTsKKyAgICBp
ZiAoUHlFcnJfT2NjdXJyZWQoKSkKKwlnb3RvIG5ld19lcnJvcjsKIAogICAgIFB5TWVtX0Zy
ZWUocyk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiAKIG5ld19lcnJvcjoKICAg
ICBQeU1lbV9GcmVlKHMpOwotICAgIFBnVmVyc2lvbl9kZWFsbG9jKHNlbGYpOworICAgIFB5
X0RFQ1JFRihzZWxmKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopTlVMTDsKIH0KIApAQCAt
NTA0LDcgKzQ1Miw3IEBACiAJUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9y
LCAKIAkJCSJQZ1ZlcnNpb24gYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5Iik7CiAgICAgfQot
ICAgIHJldHVybiAtMTsgICAKKyAgICByZXR1cm4gLTE7CSAKIH0KIAogLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCkBAIC01NTksMTAgKzUwNywxMCBAQAogCiBQeVR5cGVPYmplY3QgUGdW
ZXJzaW9uX1R5cGUgPSB7CiAgICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgKGlu
dClOVUxMLAkJCQkvKiBvYl9zaXplCQkqLworICAgIDAsCQkJCQkvKiBvYl9zaXplCQkqLwog
ICAgIE1PRFVMRV9OQU1FICIuUGdWZXJzaW9uIiwJCS8qIHRwX25hbWUJCSovCiAgICAgc2l6
ZW9mKFBnVmVyc2lvbiksCQkJLyogdHBfYmFzaWNzaXplCQkqLwotICAgIChpbnQpTlVMTCwJ
CQkJLyogdHBfaXRlbXNpemUJCSovCisgICAgMCwJCQkJCS8qIHRwX2l0ZW1zaXplCQkqLwog
ICAgIChkZXN0cnVjdG9yKVBnVmVyc2lvbl9kZWFsbG9jLAkvKiB0cF9kZWFsbG9jCQkqLwog
ICAgIChwcmludGZ1bmMpTlVMTCwJCQkvKiB0cF9wcmludAkJKi8KICAgICAoZ2V0YXR0cmZ1
bmMpUGdWZXJzaW9uX2dldGF0dHIsCS8qIHRwX2dldGF0dHIJCSovCkBAIC01NzUsMTEgKzUy
MywxNSBAQAogICAgIChoYXNoZnVuYylOVUxMLAkJCS8qIHRwX2hhc2gJCSovCiAgICAgKHRl
cm5hcnlmdW5jKU5VTEwsCQkJLyogdHBfY2FsbAkJKi8KICAgICAocmVwcmZ1bmMpTlVMTCwJ
CQkvKiB0cF9zdHIJCSovCi0gICAgTlVMTCwgTlVMTCwgTlVMTCwgKGludClOVUxMLAotICAg
IFBnVmVyc2lvbl9UeXBlX0RvYwotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAwLAkJCQkJLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAw
LAkJCQkJLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLAkJCQkJLyogdHBfYXNfYnVmZmVyICov
CisgICAgMCwJCQkJCS8qIHRwX2ZsYWdzICovCisgICAgUGdWZXJzaW9uX1R5cGVfRG9jLAkJ
CS8qIHRwX2RvYyAqLworfTsKIAogdm9pZCBpbml0cGd2ZXJzaW9uKHZvaWQpCiB7Ci0gICAg
UGdWZXJzaW9uX1R5cGUub2JfdHlwZQk9ICZQeVR5cGVfVHlwZTsKKyAgICBpZiAoUHlUeXBl
X1JlYWR5KCZQZ1ZlcnNpb25fVHlwZSkgPCAwKQorCXJldHVybjsKIH0K
--==_Exmh_1177670899_23000
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
--==_Exmh_1177670899_23000
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Pypgsql-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pypgsql-users

--==_Exmh_1177670899_23000--