Skip to content

Commit e287df6

Browse files
tormodvoldenperexg
authored andcommitted
alsahcontrol.c: Use PyBytes for IEC958 values
Closes: #14 Signed-off-by: Tormod Volden <[email protected]> Signed-off-by: Jaroslav Kysela <[email protected]>
1 parent 201bcaa commit e287df6

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

pyalsa/alsahcontrol.c

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,13 +1052,13 @@ pyalsahcontrolvalue_get1(struct pyalsahcontrolvalue *self, PyObject *args, int l
10521052
}
10531053
snd_ctl_elem_value_get_iec958(self->value, iec958);
10541054
if (!list) {
1055-
PyTuple_SET_ITEM(t, 0, PyUnicode_FromStringAndSize((char *)iec958->status, sizeof(iec958->status)));
1056-
PyTuple_SET_ITEM(t, 1, PyUnicode_FromStringAndSize((char *)iec958->subcode, sizeof(iec958->subcode)));
1057-
PyTuple_SET_ITEM(t, 2, PyUnicode_FromStringAndSize((char *)iec958->dig_subframe, sizeof(iec958->dig_subframe)));
1055+
PyTuple_SET_ITEM(t, 0, PyBytes_FromStringAndSize((char *)iec958->status, sizeof(iec958->status)));
1056+
PyTuple_SET_ITEM(t, 1, PyBytes_FromStringAndSize((char *)iec958->subcode, sizeof(iec958->subcode)));
1057+
PyTuple_SET_ITEM(t, 2, PyBytes_FromStringAndSize((char *)iec958->dig_subframe, sizeof(iec958->dig_subframe)));
10581058
} else {
1059-
PyList_SetItem(t, 0, PyUnicode_FromStringAndSize((char *)iec958->status, sizeof(iec958->status)));
1060-
PyList_SetItem(t, 1, PyUnicode_FromStringAndSize((char *)iec958->subcode, sizeof(iec958->subcode)));
1061-
PyList_SetItem(t, 2, PyUnicode_FromStringAndSize((char *)iec958->dig_subframe, sizeof(iec958->dig_subframe)));
1059+
PyList_SetItem(t, 0, PyBytes_FromStringAndSize((char *)iec958->status, sizeof(iec958->status)));
1060+
PyList_SetItem(t, 1, PyBytes_FromStringAndSize((char *)iec958->subcode, sizeof(iec958->subcode)));
1061+
PyList_SetItem(t, 2, PyBytes_FromStringAndSize((char *)iec958->dig_subframe, sizeof(iec958->dig_subframe)));
10621062
}
10631063
free(iec958);
10641064
break;
@@ -1176,30 +1176,33 @@ pyalsahcontrolvalue_settuple(struct pyalsahcontrolvalue *self, PyObject *args)
11761176
Py_DECREF(t);
11771177
Py_RETURN_NONE;
11781178
}
1179-
len = 0;
11801179
v = !list ? PyTuple_GET_ITEM(t, 0) : PyList_GetItem(t, 0);
11811180
Py_INCREF(v);
1182-
if (PyBytes_AsStringAndSize(v, &str, &len))
1181+
if (!PyBytes_Check(v))
11831182
goto err1;
1183+
len = PyBytes_Size(v);
11841184
if (len > (Py_ssize_t)sizeof(iec958->status))
1185-
len = sizeof(iec958->status);
1186-
memcpy(iec958->status, str, len);
1187-
len = 0;
1185+
len = (Py_ssize_t)sizeof(iec958->status);
1186+
str = PyBytes_AsString(v);
1187+
memcpy(iec958->status, str, (size_t)len);
11881188
v = !list ? PyTuple_GET_ITEM(t, 1) : PyList_GetItem(t, 1);
11891189
Py_INCREF(v);
1190-
if (PyBytes_AsStringAndSize(v, &str, &len))
1190+
if (!PyBytes_Check(v))
11911191
goto err1;
1192+
len = PyBytes_Size(v);
11921193
if (len > (Py_ssize_t)sizeof(iec958->subcode))
1193-
len = sizeof(iec958->subcode);
1194-
memcpy(iec958->subcode, str, len);
1195-
len = 0;
1194+
len = (Py_ssize_t)sizeof(iec958->subcode);
1195+
str = PyBytes_AsString(v);
1196+
memcpy(iec958->subcode, str, (size_t)len);
11961197
v = !list ? PyTuple_GET_ITEM(t, 2) : PyList_GetItem(t, 2);
11971198
Py_INCREF(v);
1198-
if (PyBytes_AsStringAndSize(v, &str, &len))
1199+
if (!PyBytes_Check(v))
11991200
goto err1;
1201+
len = PyBytes_Size(v);
12001202
if (len > (Py_ssize_t)sizeof(iec958->dig_subframe))
1201-
len = sizeof(iec958->dig_subframe);
1202-
memcpy(iec958->dig_subframe, str, len);
1203+
len = (Py_ssize_t)sizeof(iec958->dig_subframe);
1204+
str = PyBytes_AsString(v);
1205+
memcpy(iec958->dig_subframe, str, (size_t)len);
12031206
free(iec958);
12041207
break;
12051208
err1:

0 commit comments

Comments
 (0)