summaryrefslogtreecommitdiffstats
path: root/TODO.org
diff options
context:
space:
mode:
authorGergely Nagy <algernon@balabit.hu>2012-04-08 11:04:59 +0200
committerGergely Nagy <algernon@balabit.hu>2012-04-08 11:04:59 +0200
commit5de1bdf4c0b6f8f5d064c27ba8298019b295e970 (patch)
tree9af764fda9e59862bb178bce2aeae40aacee5e17 /TODO.org
parentbe6c6fb1b7e169f8e643e45409efbee1241954c0 (diff)
downloadlibumberlog-5de1bdf4c0b6f8f5d064c27ba8298019b295e970.tar.gz
libumberlog-5de1bdf4c0b6f8f5d064c27ba8298019b295e970.tar.xz
libumberlog-5de1bdf4c0b6f8f5d064c27ba8298019b295e970.zip
Properly handle va_lists, by copying.
Up until now, the library abused that passing va_list around without copying works on various architectures. On others, that does not. To remedy the issue, the library now parses format strings itself, and copies va_list. This makes it work on all architectures, independent on the internal implementation of va_list, and preserves both API and ABI. Signed-off-by: Gergely Nagy <algernon@balabit.hu>
Diffstat (limited to 'TODO.org')
-rw-r--r--TODO.org10
1 files changed, 8 insertions, 2 deletions
diff --git a/TODO.org b/TODO.org
index 147954c..21843c8 100644
--- a/TODO.org
+++ b/TODO.org
@@ -84,8 +84,14 @@ CLOSED: [2012-03-20 Tue 12:29]
I believe the best way to test would be to re-parse the JSON, extract
the fields, and verify they're of the expected value and type.
-* TODO Bugfixes
-** TODO Missing va_copy() when passing around varargs
+* DONE Bugfixes
+CLOSED: [2012-04-08 Sun 10:59]
+** DONE Missing va_copy() when passing around varargs
+CLOSED: [2012-04-08 Sun 10:58]
+- CLOSING NOTE [2012-04-08 Sun 10:58] \\
+ Ended up writing a format string parsing & spinning macro. This way we
+ can keep the API and the ABI stable too at the cost of some
+ performance (which isn't the strong point of the library anyway).
The way we pass around varargs is unsafe, and causes crashes on a few
systems where we would need to copy the thing around.