From 7bf86e1707459e2c3a486709efb1d25eaebed4e9 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Wed, 8 Jun 2005 19:50:02 +0000 Subject: [PATCH] when reading a file in, make sure each line is a valid multibyte string git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 +++ src/chars.c | 2 +- src/files.c | 14 ++++++++++---- src/rcfile.c | 3 +++ src/winio.c | 2 +- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d29abe6f..4dc2009c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -54,6 +54,9 @@ CVS code - and NANO_APPEND_KEY are. Changes to shortcut_init(), usage(), main(), search_init(), nanorc.sample, nano.1, nanorc.5, nano.texi, etc. (DLR) + - When reading a file in, make sure each line is a valid + multibyte string. Changes to make_mbstring(), read_line(), + and do_credits(). (DLR) - chars.c: make_mbstring() - Change erroneous ENABLE_EXTRA #ifdef to NANO_EXTRA to fix a diff --git a/src/chars.c b/src/chars.c index 549ea0da..5c808fc8 100644 --- a/src/chars.c +++ b/src/chars.c @@ -301,7 +301,7 @@ char *make_mbchar(int chr, int *chr_mb_len) return chr_mb; } -#if defined(ENABLE_NANORC) || defined(NANO_EXTRA) +#if !defined(NANO_SMALL) || defined(ENABLE_NANORC) || defined(NANO_EXTRA) /* Convert the string str to a valid multibyte string with the same wide * character values as str. Return the (dynamically allocated) * multibyte string. */ diff --git a/src/files.c b/src/files.c index cdb417de..d162fdf4 100644 --- a/src/files.c +++ b/src/files.c @@ -77,10 +77,16 @@ filestruct *read_line(char *buf, filestruct *prevnode, bool fileptr->data = mallocstrcpy(NULL, buf); #ifndef NANO_SMALL - /* If it's a DOS file (CR LF), and file conversion isn't disabled, - * strip out the CR part. */ - if (!ISSET(NO_CONVERT) && len > 0 && buf[len - 1] == '\r') - fileptr->data[len - 1] = '\0'; + if (!ISSET(NO_CONVERT)) { + /* If it's a DOS file (CR LF), and file conversion isn't + * disabled, strip the CR part from fileptr->data. */ + if (len > 0 && buf[len - 1] == '\r') + fileptr->data[len - 1] = '\0'; + + /* Make sure fileptr->data is a valid multibyte string. */ + fileptr->data = mallocstrassn(fileptr->data, + make_mbstring(fileptr->data)); + } #endif if (*first_line_ins || fileage == NULL) { diff --git a/src/rcfile.c b/src/rcfile.c index 84c3ef85..5f7fc2ab 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -557,6 +557,9 @@ void parse_rcfile(FILE *rcstream) if (*option == '"') option++; ptr = parse_argument(ptr); + + /* Make sure option is a valid multibyte + * string. */ option = make_mbstring(option); #ifdef DEBUG fprintf(stderr, "option = \"%s\"\n", option); diff --git a/src/winio.c b/src/winio.c index a792eef5..335cabe5 100644 --- a/src/winio.c +++ b/src/winio.c @@ -4036,7 +4036,7 @@ void do_credits(void) "David Benbennick", "Ken Tyler", "Sven Guckes", - "Florian König", + "Florian K\xF6nig", "Pauli Virtanen", "Daniele Medri", "Clement Laforet", -- 2.39.5