From: Uwe Hermann <redacted>
Date: Thu, 25 Aug 2016 20:26:41 +0000 (+0200)
Subject: srd_inst_decode(): Make the code API version dependent.
X-Git-Tag: libsigrokdecode-0.5.0~151
X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=04867deb37b0f8cdfad55ab7bdb8708fd13f53fc;p=libsigrokdecode.git

srd_inst_decode(): Make the code API version dependent.
---

diff --git a/instance.c b/instance.c
index b4f9cfd..86b826f 100644
--- a/instance.c
+++ b/instance.c
@@ -543,6 +543,7 @@ SRD_PRIV int srd_inst_decode(const struct srd_decoder_inst *di,
 {
 	PyObject *py_res;
 	srd_logic *logic;
+	long apiver;
 
 	/* Return an error upon unusable input. */
 	if (!di) {
@@ -566,28 +567,32 @@ SRD_PRIV int srd_inst_decode(const struct srd_decoder_inst *di,
 		end_samplenum - start_samplenum, inbuflen, di->data_unitsize,
 		di->inst_id);
 
-	/*
-	 * Create new srd_logic object. Each iteration around the PD's loop
-	 * will fill one sample into this object.
-	 */
-	logic = PyObject_New(srd_logic, (PyTypeObject *)srd_logic_type);
-	Py_INCREF(logic);
-	logic->di = (struct srd_decoder_inst *)di;
-	logic->start_samplenum = start_samplenum;
-	logic->itercnt = 0;
-	logic->inbuf = (uint8_t *)inbuf;
-	logic->inbuflen = inbuflen;
-	logic->sample = PyList_New(2);
-	Py_INCREF(logic->sample);
-
-	Py_IncRef(di->py_inst);
-	if (!(py_res = PyObject_CallMethod(di->py_inst, "decode",
+	apiver = srd_decoder_apiver(di->decoder);
+
+	if (apiver == 2) {
+		/*
+		 * Create new srd_logic object. Each iteration around the PD's
+		 * loop will fill one sample into this object.
+		 */
+		logic = PyObject_New(srd_logic, (PyTypeObject *)srd_logic_type);
+		Py_INCREF(logic);
+		logic->di = (struct srd_decoder_inst *)di;
+		logic->start_samplenum = start_samplenum;
+		logic->itercnt = 0;
+		logic->inbuf = (uint8_t *)inbuf;
+		logic->inbuflen = inbuflen;
+		logic->sample = PyList_New(2);
+		Py_INCREF(logic->sample);
+
+		Py_IncRef(di->py_inst);
+		if (!(py_res = PyObject_CallMethod(di->py_inst, "decode",
 			"KKO", start_samplenum, end_samplenum, logic))) {
-		srd_exception_catch("Protocol decoder instance %s",
-				di->inst_id);
-		return SRD_ERR_PYTHON;
+			srd_exception_catch("Protocol decoder instance %s",
+					di->inst_id);
+			return SRD_ERR_PYTHON;
+		}
+		Py_DecRef(py_res);
 	}
-	Py_DecRef(py_res);
 
 	return SRD_OK;
 }