From 4c7376a9bf598af6812a4b9abacd5567de10a66c Mon Sep 17 00:00:00 2001 From: "Fletcher T. Penney" Date: Wed, 12 Jul 2017 13:55:46 -0400 Subject: [PATCH] FIXED: Fix memory bug and silence warnings --- Sources/libMultiMarkdown/epub.c | 2 +- Sources/libMultiMarkdown/latex.c | 2 +- Sources/libMultiMarkdown/opendocument.c | 2 +- Sources/libMultiMarkdown/textbundle.c | 2 +- Sources/multimarkdown/main.c | 14 +++++++++++++- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Sources/libMultiMarkdown/epub.c b/Sources/libMultiMarkdown/epub.c index fd5d555..5bd8302 100644 --- a/Sources/libMultiMarkdown/epub.c +++ b/Sources/libMultiMarkdown/epub.c @@ -525,7 +525,7 @@ DString * epub_create(const char * body, mmd_engine * e, const char * directory) // Finalize zip archive and extract data free(result->str); - status = mz_zip_writer_finalize_heap_archive(&zip, (void **) &(result->str), &(result->currentStringLength)); + status = mz_zip_writer_finalize_heap_archive(&zip, (void **) &(result->str), (size_t *) &(result->currentStringLength)); if (!status) { fprintf(stderr, "Error adding asset to zip.\n"); } diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index e22e6dc..dc82880 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -1235,7 +1235,7 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat if (temp_char3) { // Convert `\]\[` to `][` temp_char[temp_char3 - temp_char] = ']'; - memmove(temp_char3 + 1, temp_char3 + 3, strlen(temp_char3 - 3)); + memmove(temp_char3 + 1, temp_char3 + 3, strlen(temp_char3) - 2); } if (temp_bool) { diff --git a/Sources/libMultiMarkdown/opendocument.c b/Sources/libMultiMarkdown/opendocument.c index b6368fe..725797b 100644 --- a/Sources/libMultiMarkdown/opendocument.c +++ b/Sources/libMultiMarkdown/opendocument.c @@ -944,7 +944,7 @@ DString * opendocument_core_file_create(const char * body, mmd_engine * e, const // Clean up free(result->str); - status = mz_zip_writer_finalize_heap_archive(zip, (void **) &(result->str), &(result->currentStringLength)); + status = mz_zip_writer_finalize_heap_archive(zip, (void **) &(result->str), (size_t *) &(result->currentStringLength)); if (!status) { fprintf(stderr, "Error finalizing zip archive.\n"); } diff --git a/Sources/libMultiMarkdown/textbundle.c b/Sources/libMultiMarkdown/textbundle.c index b8a0157..b401bc9 100644 --- a/Sources/libMultiMarkdown/textbundle.c +++ b/Sources/libMultiMarkdown/textbundle.c @@ -412,7 +412,7 @@ DString * textbundle_create(const char * body, mmd_engine * e, const char * dire // Finalize zip archive and extract data free(result->str); - status = mz_zip_writer_finalize_heap_archive(&zip, (void **) &(result->str), &(result->currentStringLength)); + status = mz_zip_writer_finalize_heap_archive(&zip, (void **) &(result->str), (size_t *) &(result->currentStringLength)); if (!status) { fprintf(stderr, "Error finalizing zip.\n"); } diff --git a/Sources/multimarkdown/main.c b/Sources/multimarkdown/main.c index 60bc180..7b6bac4 100644 --- a/Sources/multimarkdown/main.c +++ b/Sources/multimarkdown/main.c @@ -81,6 +81,18 @@ struct arg_end *a_end; struct arg_rem *a_rem1, *a_rem2, *a_rem3, *a_rem4, *a_rem5, *a_rem6; +/// strdup() not available on all platforms +static char * my_strdup(const char * source) { + char * result = malloc(strlen(source) + 1); + + if (result) { + strcpy(result, source); + } + + return result; +} + + DString * stdin_buffer() { /* Read from stdin and return a DString * `buffer` will need to be freed elsewhere */ @@ -107,7 +119,7 @@ char * filename_with_extension(const char * original, const char * new_extension DString * new_name; // Determine output filename without file extension - name_no_ext = strdup(original); + name_no_ext = my_strdup(original); if (strrchr(name_no_ext, '.') != NULL) { long count = strrchr(name_no_ext, '.') - name_no_ext; -- 2.40.0