You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2019/11/25 18:52:30 UTC
[qpid-proton] 02/02: PROTON-2140: remove str scratch element from
pn_data_t
This is an automated email from the ASF dual-hosted git repository.
astitcher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git
commit 9e3c18b5b84e11e069a97980ac1e602479473bad
Author: Andrew Stitcher <as...@apache.org>
AuthorDate: Mon Nov 25 11:08:33 2019 -0500
PROTON-2140: remove str scratch element from pn_data_t
---
c/src/core/codec.c | 47 ++++++++++++++++++++---------------------------
c/src/core/data.h | 1 -
2 files changed, 20 insertions(+), 28 deletions(-)
diff --git a/c/src/core/codec.c b/c/src/core/codec.c
index 904fb72..e26ef81 100644
--- a/c/src/core/codec.c
+++ b/c/src/core/codec.c
@@ -86,7 +86,6 @@ static void pn_data_finalize(void *object)
pn_data_t *data = (pn_data_t *) object;
free(data->nodes);
pn_buffer_free(data->buf);
- pn_free(data->str);
pn_error_free(data->error);
}
@@ -362,14 +361,6 @@ static int pn_data_inspect(void *obj, pn_string_t *dst)
#define pn_data_hashcode NULL
#define pn_data_compare NULL
-static inline pn_string_t *pni_data_str(pn_data_t *data)
-{
- if (data->str == NULL) {
- data->str = pn_string(NULL);
- }
- return data->str;
-}
-
static inline pn_error_t *pni_data_error(pn_data_t *data)
{
if (data->error == NULL) {
@@ -391,7 +382,6 @@ pn_data_t *pn_data(size_t capacity)
data->base_parent = 0;
data->base_current = 0;
data->error = NULL;
- data->str = NULL;
return data;
}
@@ -1198,30 +1188,31 @@ int pn_data_scan(pn_data_t *data, const char *fmt, ...)
return err;
}
-static int pni_data_inspectify(pn_data_t *data)
-{
- int err = pn_string_set(pni_data_str(data), "");
- if (err) return err;
- return pn_data_inspect(data, pni_data_str(data));
-}
-
int pn_data_print(pn_data_t *data)
{
- int err = pni_data_inspectify(data);
- if (err) return err;
- printf("%s", pn_string_get(pni_data_str(data)));
+ pn_string_t *str = pn_string("");
+ int err = pn_data_inspect(data, str);
+ if (err) {
+ pn_free(str);
+ return err;
+ }
+ printf("%s", pn_string_get(str));
+ pn_free(str);
return 0;
}
int pn_data_format(pn_data_t *data, char *bytes, size_t *size)
{
- int err = pni_data_inspectify(data);
+ pn_string_t *str = pn_string("");
+ int err = pn_data_inspect(data, str);
if (err) return err;
- if (pn_string_size(pni_data_str(data)) >= *size) {
+ if (pn_string_size(str) >= *size) {
+ pn_free(str);
return PN_OVERFLOW;
} else {
- pn_string_put(pni_data_str(data), bytes);
- *size = pn_string_size(pni_data_str(data));
+ pn_string_put(str, bytes);
+ *size = pn_string_size(str);
+ pn_free(str);
return 0;
}
}
@@ -1461,12 +1452,13 @@ bool pn_data_lookup(pn_data_t *data, const char *name)
void pn_data_dump(pn_data_t *data)
{
+ pn_string_t *str = pn_string(0);
printf("{current=%" PN_ZI ", parent=%" PN_ZI "}\n", (size_t) data->current, (size_t) data->parent);
for (unsigned i = 0; i < data->size; i++)
{
pni_node_t *node = &data->nodes[i];
- pn_string_set(pni_data_str(data), "");
- pni_inspect_atom((pn_atom_t *) &node->atom, pni_data_str(data));
+ pn_string_setn(str, "", 0);
+ pni_inspect_atom((pn_atom_t *) &node->atom, str);
printf("Node %i: prev=%" PN_ZI ", next=%" PN_ZI ", parent=%" PN_ZI ", down=%" PN_ZI
", children=%" PN_ZI ", type=%s (%s)\n",
i + 1, (size_t) node->prev,
@@ -1474,8 +1466,9 @@ void pn_data_dump(pn_data_t *data)
(size_t) node->parent,
(size_t) node->down,
(size_t) node->children,
- pn_type_name(node->atom.type), pn_string_get(pni_data_str(data)));
+ pn_type_name(node->atom.type), pn_string_get(str));
}
+ pn_free(str);
}
static pni_node_t *pni_data_add(pn_data_t *data)
diff --git a/c/src/core/data.h b/c/src/core/data.h
index 755909e..442760e 100644
--- a/c/src/core/data.h
+++ b/c/src/core/data.h
@@ -51,7 +51,6 @@ struct pn_data_t {
pni_node_t *nodes;
pn_buffer_t *buf;
pn_error_t *error;
- pn_string_t *str;
pni_nid_t capacity;
pni_nid_t size;
pni_nid_t parent;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org