diff --git a/src/chars.c b/src/chars.c index 79c66b89b1d29f8e4f0a9d9ae1ea3a3806728d08..6da82e926219b706e129256ed5e7a62e0f1223c1 100644 --- a/src/chars.c +++ b/src/chars.c @@ -213,7 +213,7 @@ char *control_mbrep(const char *c, char *crep, int *crep_len) } else { #endif *crep_len = 1; - crep[0] = control_rep((unsigned char)*c); + *crep = control_rep((unsigned char)*c); return crep; #ifdef NANO_WIDE @@ -276,10 +276,10 @@ int mb_cur_max(void) * multibyte character and its length. */ char *make_mbchar(int chr, int *chr_mb_len) { - assert(chr_mb != NULL && chr_mb_len != NULL); - char *chr_mb; + assert(chr_mb != NULL && chr_mb_len != NULL); + #ifdef NANO_WIDE if (!ISSET(NO_UTF8)) { chr_mb = charalloc(MB_CUR_MAX); @@ -293,7 +293,7 @@ char *make_mbchar(int chr, int *chr_mb_len) #endif *chr_mb_len = 1; chr_mb = charalloc(1); - chr_mb[0] = (char)chr; + *chr_mb = (char)chr; #ifdef NANO_WIDE } #endif @@ -305,17 +305,15 @@ char *make_mbchar(int chr, int *chr_mb_len) /* Convert the string str to a valid multibyte string with the same wide * character values as str. Return the (dynamically allocated) * multibyte string. */ -char *make_mbstring(char *str) +char *make_mbstring(const char *str) { assert(str != NULL); - char *str_mb; - #ifdef NANO_WIDE if (!ISSET(NO_UTF8)) { char *chr_mb = charalloc(MB_CUR_MAX); int chr_mb_len; - str_mb = charalloc((MB_CUR_MAX * strlen(str)) + 1); + char *str_mb = charalloc((MB_CUR_MAX * strlen(str)) + 1); size_t str_mb_len = 0; while (*str != '\0') { @@ -328,7 +326,7 @@ char *make_mbstring(char *str) char *bad_chr_mb; int bad_chr_mb_len; - bad_chr_mb = make_mbchar((unsigned char)chr_mb[0], + bad_chr_mb = make_mbchar((unsigned char)*chr_mb, &bad_chr_mb_len); for (i = 0; i < bad_chr_mb_len; i++) @@ -351,7 +349,7 @@ char *make_mbstring(char *str) return str_mb; } else #endif - return mallocstrcpy(str_mb, str); + return mallocstrcpy(NULL, str); } #endif diff --git a/src/proto.h b/src/proto.h index 01b9a9a2af4f1a34ec31ffe8660bf6026dffae1b..f5780014a2d57a35bbaea97575d97d372087793f 100644 --- a/src/proto.h +++ b/src/proto.h @@ -176,7 +176,7 @@ int mbwidth(const char *c); int mb_cur_max(void); char *make_mbchar(int chr, int *chr_mb_len); #ifdef ENABLE_NANORC -char *make_mbstring(char *str); +char *make_mbstring(const char *str); #endif int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t *col); diff --git a/src/winio.c b/src/winio.c index 80aef2ec16fdb03cde83648d3bf3d5f64c02bb6e..e5044f319c207d91d06b8848f68bdf70c1b3ce70 100644 --- a/src/winio.c +++ b/src/winio.c @@ -4051,10 +4051,7 @@ void do_credits(void) "David Benbennick", "Ken Tyler", "Sven Guckes", -#ifdef NANO_WIDE - !ISSET(NO_UTF8) ? "Florian König" : -#endif - "Florian König", + "Florian König", "Pauli Virtanen", "Daniele Medri", "Clement Laforet", @@ -4121,6 +4118,7 @@ void do_credits(void) for (crpos = 0; crpos < CREDIT_LEN + editwinrows / 2; crpos++) { if (wgetch(edit) != ERR) break; + if (crpos < CREDIT_LEN) { const char *what = credits[crpos]; size_t start_x; @@ -4134,6 +4132,7 @@ void do_credits(void) mvwaddstr(edit, editwinrows - 1 - editwinrows % 2, start_x, what); } + napms(700); scroll(edit); wrefresh(edit);