From 7b3ea43e920d448f9eeb450ef04b1224d62b5542 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Sun, 16 Apr 2017 03:16:32 +0200 Subject: [PATCH] Handle lobject mode=None correctly --- psycopg/lobject_type.c | 5 ++++- tests/test_lobject.py | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/psycopg/lobject_type.c b/psycopg/lobject_type.c index 54f3a4be..81c56757 100644 --- a/psycopg/lobject_type.c +++ b/psycopg/lobject_type.c @@ -398,7 +398,7 @@ static int lobject_init(PyObject *obj, PyObject *args, PyObject *kwds) { Oid oid = InvalidOid, new_oid = InvalidOid; - const char *smode = ""; + const char *smode = NULL; const char *new_file = NULL; PyObject *conn = NULL; @@ -407,6 +407,9 @@ lobject_init(PyObject *obj, PyObject *args, PyObject *kwds) &oid, &smode, &new_oid, &new_file)) return -1; + if (!smode) + smode = ""; + return lobject_setup((lobjectObject *)obj, (connectionObject *)conn, oid, smode, new_oid, new_file); } diff --git a/tests/test_lobject.py b/tests/test_lobject.py index 3379ec0c..f79ae5ea 100755 --- a/tests/test_lobject.py +++ b/tests/test_lobject.py @@ -110,6 +110,13 @@ class LargeObjectTests(LargeObjectTestCase): self.assertEqual(lo2.oid, lo.oid) self.assertEqual(lo2.closed, True) + def test_mode_defaults(self): + lo = self.conn.lobject() + lo2 = self.conn.lobject(mode=None) + lo3 = self.conn.lobject(mode="") + self.assertEqual(lo.mode, lo2.mode) + self.assertEqual(lo.mode, lo3.mode) + def test_close_connection_gone(self): lo = self.conn.lobject() self.conn.close()