diff options
author | Marco Paland <marco@paland.com> | 2018-08-01 14:06:37 +0200 |
---|---|---|
committer | Marco Paland <marco@paland.com> | 2018-08-01 14:06:37 +0200 |
commit | deb685e7a9f15cec3a7156454ecdc282097c89e7 (patch) | |
tree | b89aa2ff506e2963f89f5d380447e9fed8df4185 | |
parent | a07b5d4200c81b1c99ce459e341ff9a12ee7cdac (diff) | |
download | printf-deb685e7a9f15cec3a7156454ecdc282097c89e7.tar.gz printf-deb685e7a9f15cec3a7156454ecdc282097c89e7.tar.bz2 printf-deb685e7a9f15cec3a7156454ecdc282097c89e7.zip |
fix(printf): change char* to void* pointer to avoid cast-align trouble
Closes #17 again
-rw-r--r-- | printf.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -74,7 +74,7 @@ // output function type
-typedef void (*out_fct_type)(char character, char* buffer, size_t idx, size_t maxlen);
+typedef void (*out_fct_type)(char character, void* buffer, size_t idx, size_t maxlen);
// wrapper (used as buffer) for output function type
@@ -85,23 +85,23 @@ typedef struct { // internal buffer output
-static inline void _out_buffer(char character, char* buffer, size_t idx, size_t maxlen)
+static inline void _out_buffer(char character, void* buffer, size_t idx, size_t maxlen)
{
if (idx < maxlen) {
- buffer[idx] = character;
+ ((char*)buffer)[idx] = character;
}
}
// internal null output
-static inline void _out_null(char character, char* buffer, size_t idx, size_t maxlen)
+static inline void _out_null(char character, void* buffer, size_t idx, size_t maxlen)
{
(void)character; (void)buffer; (void)idx; (void)maxlen;
}
// internal _putchar wrapper
-static inline void _out_char(char character, char* buffer, size_t idx, size_t maxlen)
+static inline void _out_char(char character, void* buffer, size_t idx, size_t maxlen)
{
(void)buffer; (void)idx; (void)maxlen;
if (character) {
@@ -111,7 +111,7 @@ static inline void _out_char(char character, char* buffer, size_t idx, size_t ma // internal output function wrapper
-static inline void _out_fct(char character, char* buffer, size_t idx, size_t maxlen)
+static inline void _out_fct(char character, void* buffer, size_t idx, size_t maxlen)
{
(void)idx; (void)maxlen;
// buffer is the output fct pointer
|