X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;ds=sidebyside;f=test%2Fpadview.c;h=fb1d9fca176ee89329b7c172778f21dcfaf5c5a9;hb=87154b424ea0f67c2965d00e861ddfb134082d94;hp=6917e0ed6eb654de2ad81e896b57b706195c8c29;hpb=47d2fb4537d9ad5bb14f4810561a327930ca4280;p=ncurses.git diff --git a/test/padview.c b/test/padview.c index 6917e0ed..fb1d9fca 100644 --- a/test/padview.c +++ b/test/padview.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2019-2020,2021 Thomas E. Dickey * * Copyright 2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -29,7 +29,7 @@ /* * clone of view.c, using pads * - * $Id: padview.c,v 1.16 2020/02/02 23:34:34 tom Exp $ + * $Id: padview.c,v 1.18 2021/06/12 23:16:31 tom Exp $ */ #include @@ -41,7 +41,7 @@ #if HAVE_NEWPAD -static void finish(int sig) GCC_NORETURN; +static GCC_NORETURN void finish(int sig); #define my_pair 1 @@ -55,7 +55,7 @@ static int num_lines; static bool n_option = FALSE; #endif -static void usage(void) GCC_NORETURN; +static GCC_NORETURN void usage(void); static void failed(const char *msg) @@ -144,9 +144,12 @@ read_file(const char *filename) } len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp); - my_blob[sb.st_size] = '\0'; fclose(fp); + if (len > (size_t) sb.st_size) + len = (size_t) sb.st_size; + my_blob[len] = '\0'; + for (pass = 0; pass < 2; ++pass) { char *base = my_blob; k = 0; @@ -160,12 +163,19 @@ read_file(const char *filename) ++k; } } + if (base != (my_blob + j)) { + if (pass) + my_vec[k] = base; + ++k; + } num_lines = k; - if (base != (my_blob + j)) - ++num_lines; - if (!pass && - ((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) { - failed("cannot allocate line-vector #1"); + if (pass == 0) { + if (((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) { + failed("cannot allocate line-vector #1"); + } + } else { + if (my_vec[0] == NULL) + my_vec[0] = my_blob; } }