From d71b45ae8e9621708f3a581e56339d6dd2c68a1a Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Thu, 3 Oct 2013 23:38:18 +0200 Subject: [PATCH] * grub-core/tests/video_checksum.c: Increase robustness to out of memory condition. * grub-core/tests/fake_input.c: Likewise. * grub-core/tests/cmdline_cat_test.c: Likewise. --- ChangeLog | 7 +++++++ grub-core/tests/cmdline_cat_test.c | 6 ++---- grub-core/tests/fake_input.c | 18 ++++++++++++------ grub-core/tests/video_checksum.c | 17 ++++++++++++++--- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index c83c74624..194366d0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-10-03 Vladimir Serbinenko + + * grub-core/tests/video_checksum.c: Increase robustness to out of memory + condition. + * grub-core/tests/fake_input.c: Likewise. + * grub-core/tests/cmdline_cat_test.c: Likewise. + 2013-10-03 Vladimir Serbinenko * grub-core/video/capture.c: Do not do finalization when .fini diff --git a/grub-core/tests/cmdline_cat_test.c b/grub-core/tests/cmdline_cat_test.c index cd08b2243..c24c7639a 100644 --- a/grub-core/tests/cmdline_cat_test.c +++ b/grub-core/tests/cmdline_cat_test.c @@ -98,10 +98,8 @@ cmdline_cat_test (void) grub_video_checksum ("cmdline_cat"); - if (grub_test_use_gfxterm ()) - return; - - grub_cmdline_run (1); + if (!grub_test_use_gfxterm ()) + grub_cmdline_run (1); grub_test_use_gfxterm_end (); diff --git a/grub-core/tests/fake_input.c b/grub-core/tests/fake_input.c index 3c24e0f27..2d6085298 100644 --- a/grub-core/tests/fake_input.c +++ b/grub-core/tests/fake_input.c @@ -26,6 +26,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); static int *seq; static int seqptr, nseq; static struct grub_term_input *saved; +static int fake_input; static int fake_getkey (struct grub_term_input *term __attribute__ ((unused))) @@ -44,23 +45,28 @@ static struct grub_term_input fake_input_term = void grub_terminal_input_fake_sequence (int *seq_in, int nseq_in) { - if (!saved) + if (!fake_input) saved = grub_term_inputs; if (seq) grub_free (seq); seq = grub_malloc (nseq_in * sizeof (seq[0])); - if (seq) - { - grub_term_inputs = &fake_input_term; - grub_memcpy (seq, seq_in, nseq_in * sizeof (seq[0])); - } + if (!seq) + return; + + grub_term_inputs = &fake_input_term; + grub_memcpy (seq, seq_in, nseq_in * sizeof (seq[0])); + nseq = nseq_in; seqptr = 0; + fake_input = 1; } void grub_terminal_input_fake_sequence_end (void) { + if (!fake_input) + return; + fake_input = 0; grub_term_inputs = saved; grub_free (seq); seq = 0; diff --git a/grub-core/tests/video_checksum.c b/grub-core/tests/video_checksum.c index fff179cc1..d898529cd 100644 --- a/grub-core/tests/video_checksum.c +++ b/grub-core/tests/video_checksum.c @@ -764,12 +764,11 @@ grub_video_checksum_end (void) static struct grub_term_output *saved_outputs; static struct grub_term_output *saved_gfxnext; static struct grub_term_output *gfxterm; +static int use_gfxterm = 0; int grub_test_use_gfxterm (void) { - saved_outputs = grub_term_outputs; - FOR_ACTIVE_TERM_OUTPUTS (gfxterm) if (grub_strcmp (gfxterm->name, "gfxterm") == 0) break; @@ -784,10 +783,17 @@ grub_test_use_gfxterm (void) return 1; } + if (gfxterm->init (gfxterm)) + { + grub_test_assert (0, "terminal `%s' failed: %s", "gfxterm", grub_errmsg); + return 1; + } + + saved_outputs = grub_term_outputs; saved_gfxnext = gfxterm->next; grub_term_outputs = gfxterm; gfxterm->next = 0; - gfxterm->init (gfxterm); + use_gfxterm = 1; return 0; } @@ -795,7 +801,12 @@ grub_test_use_gfxterm (void) void grub_test_use_gfxterm_end (void) { + if (!use_gfxterm) + return; + use_gfxterm = 0; gfxterm->fini (gfxterm); gfxterm->next = saved_gfxnext; grub_term_outputs = saved_outputs; + saved_outputs = 0; + saved_gfxnext = 0; }