Skip to content

Commit 3fb81f1

Browse files
Martin Belangerigaw
authored andcommitted
python: Return PyObject* from __str__() instead of a static char[]
Signed-off-by: Martin Belanger <[email protected]>
1 parent 071bf67 commit 3fb81f1

1 file changed

Lines changed: 9 additions & 14 deletions

File tree

libnvme/nvme.i

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,9 @@ static void PyDict_SetItemStringDecRef(PyObject *p, const char *key, PyObject *v
278278
}
279279
$result = obj;
280280
};
281+
282+
#define STR_OR_NONE(str) (!(str) ? "None" : str)
283+
281284
struct nvme_root {
282285
%immutable config_file;
283286
char *config_file;
@@ -444,11 +447,9 @@ struct nvme_ns {
444447
void set_symname(const char *hostsymname) {
445448
nvme_host_set_hostsymname($self, hostsymname);
446449
}
447-
char *__str__() {
448-
static char tmp[2048];
449450

450-
sprintf(tmp, "nvme_host(%s,%s)", $self->hostnqn, $self->hostid);
451-
return tmp;
451+
PyObject *__str__() {
452+
return PyUnicode_FromFormat("nvme.host(%s,%s)", STR_OR_NONE($self->hostnqn), STR_OR_NONE($self->hostid));
452453
}
453454
struct host_iter __iter__() {
454455
struct host_iter ret = { .root = nvme_host_get_root($self),
@@ -514,11 +515,8 @@ struct nvme_ns {
514515
~nvme_subsystem() {
515516
nvme_free_subsystem($self);
516517
}
517-
char *__str__() {
518-
static char tmp[1024];
519-
520-
sprintf(tmp, "nvme_subsystem(%s,%s)", $self->name,$self->subsysnqn);
521-
return tmp;
518+
PyObject *__str__() {
519+
return PyUnicode_FromFormat("nvme.subsystem(%s,%s)", STR_OR_NONE($self->name), STR_OR_NONE($self->subsysnqn));
522520
}
523521
struct subsystem_iter __iter__() {
524522
struct subsystem_iter ret = { .host = nvme_subsystem_get_host($self),
@@ -736,11 +734,8 @@ struct nvme_ns {
736734
~nvme_ns() {
737735
nvme_free_ns($self);
738736
}
739-
char *__str__() {
740-
static char tmp[1024];
741-
742-
sprintf(tmp, "nvme_ns(%u)", $self->nsid);
743-
return tmp;
737+
PyObject *__str__() {
738+
return PyUnicode_FromFormat("nvme.ns(%u)", $self->nsid);
744739
}
745740
struct ns_iter __iter__() {
746741
struct ns_iter ret = { .ctrl = nvme_ns_get_ctrl($self),

0 commit comments

Comments
 (0)