Module Name:    src
Committed By:   rin
Date:           Fri Aug  9 12:05:52 UTC 2019

Modified Files:
        src/sys/dev/rasops: rasops.c rasops1-4_putchar.h rasops1.c
            rasops1_putchar_width.h rasops_putchar.h rasops_putchar_width.h

Log Message:
Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


To generate a diff of this commit:
cvs rdiff -u -r1.119 -r1.120 src/sys/dev/rasops/rasops.c
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/rasops/rasops1-4_putchar.h
cvs rdiff -u -r1.35 -r1.36 src/sys/dev/rasops/rasops1.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/rasops/rasops1_putchar_width.h
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/rasops/rasops_putchar.h
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/rasops/rasops_putchar_width.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/rasops/rasops.c
diff -u src/sys/dev/rasops/rasops.c:1.119 src/sys/dev/rasops/rasops.c:1.120
--- src/sys/dev/rasops/rasops.c:1.119	Fri Aug  9 11:42:03 2019
+++ src/sys/dev/rasops/rasops.c	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/*	 $NetBSD: rasops.c,v 1.119 2019/08/09 11:42:03 rin Exp $	*/
+/*	 $NetBSD: rasops.c,v 1.120 2019/08/09 12:05:51 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops.c,v 1.119 2019/08/09 11:42:03 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops.c,v 1.120 2019/08/09 12:05:51 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -598,18 +598,11 @@ rasops_mapchar(void *cookie, int c, u_in
 	KASSERT(ri->ri_font != NULL);
 
 	if ((c = wsfont_map_unichar(ri->ri_font, c)) < 0 ||
-	    c < ri->ri_font->firstchar) {
+	    !CHAR_IN_FONT(c, ri->ri_font)) {
 		*cp = ' ';
 		return 0;
 	}
 
-#if 0 /* XXXRO */
-	if (CHAR_IN_FONT(c, ri->ri_font)) {
-		*cp = ' ';
-		return 0;
-	}
-#endif
-
 	*cp = c;
 	return 5;
 }

Index: src/sys/dev/rasops/rasops1-4_putchar.h
diff -u src/sys/dev/rasops/rasops1-4_putchar.h:1.1 src/sys/dev/rasops/rasops1-4_putchar.h:1.2
--- src/sys/dev/rasops/rasops1-4_putchar.h:1.1	Wed Aug  7 12:36:36 2019
+++ src/sys/dev/rasops/rasops1-4_putchar.h	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rasops1-4_putchar.h,v 1.1 2019/08/07 12:36:36 rin Exp $ */
+/* $NetBSD: rasops1-4_putchar.h,v 1.2 2019/08/09 12:05:51 rin Exp $ */
 
 /* NetBSD: rasops_bitops.h,v 1.23 2019/08/02 04:39:09 rin Exp */
 /*-
@@ -97,6 +97,9 @@ NAME(RASOPS_DEPTH)(void *cookie, int row
 
 	hp = NULL;	/* XXX GCC */
 
+	if (__predict_false(!CHAR_IN_FONT(uc, font)))
+		return;
+
 #ifdef RASOPS_CLIPPING
 	/* Catches 'row < 0' case too */
 	if ((unsigned)row >= (unsigned)ri->ri_rows)

Index: src/sys/dev/rasops/rasops1.c
diff -u src/sys/dev/rasops/rasops1.c:1.35 src/sys/dev/rasops/rasops1.c:1.36
--- src/sys/dev/rasops/rasops1.c:1.35	Wed Aug  7 12:27:49 2019
+++ src/sys/dev/rasops/rasops1.c	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops1.c,v 1.35 2019/08/07 12:27:49 rin Exp $	*/
+/* 	$NetBSD: rasops1.c,v 1.36 2019/08/09 12:05:51 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops1.c,v 1.35 2019/08/07 12:27:49 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops1.c,v 1.36 2019/08/09 12:05:51 rin Exp $");
 
 #include "opt_rasops.h"
 
@@ -100,6 +100,9 @@ rasops1_putchar(void *cookie, int row, i
 
 	hp = NULL;	/* XXX GCC */
 
+	if (__predict_false(!CHAR_IN_FONT(uc, font)))
+		return;
+
 #ifdef RASOPS_CLIPPING
 	/* Catches 'row < 0' case too */
 	if ((unsigned)row >= (unsigned)ri->ri_rows)

Index: src/sys/dev/rasops/rasops1_putchar_width.h
diff -u src/sys/dev/rasops/rasops1_putchar_width.h:1.4 src/sys/dev/rasops/rasops1_putchar_width.h:1.5
--- src/sys/dev/rasops/rasops1_putchar_width.h:1.4	Wed Aug  7 12:27:49 2019
+++ src/sys/dev/rasops/rasops1_putchar_width.h	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rasops1_putchar_width.h,v 1.4 2019/08/07 12:27:49 rin Exp $ */
+/* $NetBSD: rasops1_putchar_width.h,v 1.5 2019/08/09 12:05:51 rin Exp $ */
 
 /* NetBSD: rasops1.c,v 1.28 2019/07/25 03:02:44 rin Exp */
 /*-
@@ -69,6 +69,9 @@ PUTCHAR_WIDTH(RASOPS_WIDTH)(void *cookie
 
 	hp = NULL;	/* XXX GCC */
 
+	if (__predict_false(!CHAR_IN_FONT(uc, font)))
+		return;
+
 #ifdef RASOPS_CLIPPING
 	/* Catches 'row < 0' case too */
 	if ((unsigned)row >= (unsigned)ri->ri_rows)

Index: src/sys/dev/rasops/rasops_putchar.h
diff -u src/sys/dev/rasops/rasops_putchar.h:1.6 src/sys/dev/rasops/rasops_putchar.h:1.7
--- src/sys/dev/rasops/rasops_putchar.h:1.6	Wed Aug  7 12:33:48 2019
+++ src/sys/dev/rasops/rasops_putchar.h	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rasops_putchar.h,v 1.6 2019/08/07 12:33:48 rin Exp $ */
+/* $NetBSD: rasops_putchar.h,v 1.7 2019/08/09 12:05:51 rin Exp $ */
 
 /* NetBSD: rasops8.c,v 1.41 2019/07/25 03:02:44 rin Exp  */
 /*-
@@ -106,7 +106,7 @@ NAME(RASOPS_DEPTH)(void *cookie, int row
 
 	hp = NULL;	/* XXX GCC */
 
-	if (!CHAR_IN_FONT(uc, font))
+	if (__predict_false(!CHAR_IN_FONT(uc, font)))
 		return;
 
 #ifdef RASOPS_CLIPPING

Index: src/sys/dev/rasops/rasops_putchar_width.h
diff -u src/sys/dev/rasops/rasops_putchar_width.h:1.12 src/sys/dev/rasops/rasops_putchar_width.h:1.13
--- src/sys/dev/rasops/rasops_putchar_width.h:1.12	Wed Aug  7 12:27:49 2019
+++ src/sys/dev/rasops/rasops_putchar_width.h	Fri Aug  9 12:05:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rasops_putchar_width.h,v 1.12 2019/08/07 12:27:49 rin Exp $ */
+/* $NetBSD: rasops_putchar_width.h,v 1.13 2019/08/09 12:05:51 rin Exp $ */
 
 /* NetBSD: rasops8.c,v 1.41 2019/07/25 03:02:44 rin Exp  */
 /*-
@@ -220,7 +220,7 @@ PUTCHAR_WIDTH(RASOPS_DEPTH, RASOPS_WIDTH
 #endif
 
 	/* check if character fits into font limits */
-	if (!CHAR_IN_FONT(uc, font))
+	if (__predict_false(!CHAR_IN_FONT(uc, font)))
 		return;
 
 	/* Recompute stamp? */

Reply via email to