Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/lib/libcurses Fix false positive for mvscanw tests on ...



details:   https://anonhg.NetBSD.org/src/rev/18b9896431a8
branches:  trunk
changeset: 934909:18b9896431a8
user:      rin <rin%NetBSD.org@localhost>
date:      Sat Jun 20 07:50:16 2020 +0000

description:
Fix false positive for mvscanw tests on big endian machines.

When conversion specifier is not a derivative form of "%s", retrieve
input as 32bit integer, and then convert to string literal. Then we
can avoid interpretation from ASCII code to integer, which is
apparently byte-order depended.

diffstat:

 tests/lib/libcurses/slave/curses_commands.c |  12 +++++++++---
 tests/lib/libcurses/tests/mvscanw           |   7 ++++---
 2 files changed, 13 insertions(+), 6 deletions(-)

diffs (52 lines):

diff -r 41f7d8c5f0fd -r 18b9896431a8 tests/lib/libcurses/slave/curses_commands.c
--- a/tests/lib/libcurses/slave/curses_commands.c       Sat Jun 20 07:30:09 2020 +0000
+++ b/tests/lib/libcurses/slave/curses_commands.c       Sat Jun 20 07:50:16 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: curses_commands.c,v 1.9 2019/05/26 07:47:37 blymn Exp $        */
+/*     $NetBSD: curses_commands.c,v 1.10 2020/06/20 07:50:16 rin Exp $ */
 
 /*-
  * Copyright 2009 Brett Lymn <blymn%NetBSD.org@localhost>
@@ -3061,7 +3061,7 @@
 void
 cmd_mvscanw(int nargs, char **args)
 {
-       int y, x;
+       int y, x, val;
        char string[256];
 
        if (check_arg_count(nargs, 3) == 1)
@@ -3081,7 +3081,13 @@
 
        /* XXX - call2 */
        report_count(2);
-       report_return(mvscanw(y, x, args[2], &string));
+       if (strchr(args[2], 's') != NULL)
+               report_return(mvscanw(y, x, args[2], &string));
+       else {
+               /* XXX assume 32bit integer */
+               report_return(mvscanw(y, x, args[2], &val));
+               snprintf(string, sizeof(string), args[2], val);
+       }
        report_status(string);
 }
 
diff -r 41f7d8c5f0fd -r 18b9896431a8 tests/lib/libcurses/tests/mvscanw
--- a/tests/lib/libcurses/tests/mvscanw Sat Jun 20 07:30:09 2020 +0000
+++ b/tests/lib/libcurses/tests/mvscanw Sat Jun 20 07:50:16 2020 +0000
@@ -1,11 +1,12 @@
+# XXX For this test, only one string or 32bit integer are supported as
+# conversion specifiers at the moment.
 include start
 input "testing 1 2 3\n"
 call2 OK "testing" mvscanw 3 5 "%s"
 input "testing 1 2 3\n"
 call2 OK "test" mvscanw 3 5 "%4s"
-# 50 will translate into number 2 in ascii
 input "50 12\n"
-call2 OK "2" mvscanw 3 5 "%d"
+call2 OK "50" mvscanw 3 5 "%d"
 input "aa bb 50 12\n"
 # expect ERR because input has alpha and scanw wants integer
-call2 ERR "2" mvscanw 3 5 "%d"
+call2 ERR "50" mvscanw 3 5 "%d"



Home | Main Index | Thread Index | Old Index