aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTucker Evans <tucker@tuckerevans.com>2020-07-04 22:07:23 -0400
committerTucker Evans <tucker@tuckerevans.com>2020-07-04 23:14:25 -0400
commit8aa9f42d914a453a0570752ee292b9a9cfcae9d6 (patch)
treed69dfda702898a808c89f432ccf7a46e5e2e8c7f
parent8874cf97227139ed10e75fe13108988b45492172 (diff)
Fix vector print function now frees string representations
-rw-r--r--collections/vector/vector.adoc7
-rw-r--r--collections/vector/vector.c5
2 files changed, 9 insertions, 3 deletions
diff --git a/collections/vector/vector.adoc b/collections/vector/vector.adoc
index e3fa94a..ce91c71 100644
--- a/collections/vector/vector.adoc
+++ b/collections/vector/vector.adoc
@@ -1,7 +1,7 @@
Vector
======
Tucker Evans
-v0.15, 2020-07-04
+v0.16, 2020-07-04
A basic vector, that hold pointers to your data structures.
@@ -112,6 +112,9 @@ brackets and separated by commas ','). +to_string+ is a function that takes a
pointer to the type of elements stored in +self+ and returns a string
representation.
+NOTE: Strings are freed after printing, therefore +strdup()+ should be used on
+any strings that are not for the sole purpose of printing here.
+
Examples
^^^^^^^^
[source,c]
@@ -122,7 +125,7 @@ Examples
char* to_string(str)
void *str;
{
- return str;
+ return strdup(str);
}
int main()
diff --git a/collections/vector/vector.c b/collections/vector/vector.c
index c456d8a..391b5a6 100644
--- a/collections/vector/vector.c
+++ b/collections/vector/vector.c
@@ -108,10 +108,13 @@ vec *root;
char* to_string(void*);
{
int i;
+ char *tmp;
printf("[");
for(i = 0; i < root->end; i++) {
- printf("%s", to_string(vec_index(root, i)));
+ printf("%s", tmp = to_string(vec_index(root, i)));
+ free(tmp);
+ tmp = NULL;
}
printf("\b]\n");