Module Name:    src
Committed By:   joerg
Date:           Sat Apr 27 17:19:47 UTC 2013

Modified Files:
        src/lib/libm/src: s_scalbln.c

Log Message:
Casting is a not a valid way to check for overflow, so be explicit and
use the limit macros.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/lib/libm/src/s_scalbln.c

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

Modified files:

Index: src/lib/libm/src/s_scalbln.c
diff -u src/lib/libm/src/s_scalbln.c:1.3 src/lib/libm/src/s_scalbln.c:1.4
--- src/lib/libm/src/s_scalbln.c:1.3	Sat Apr 27 16:43:13 2013
+++ src/lib/libm/src/s_scalbln.c	Sat Apr 27 17:19:47 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: s_scalbln.c,v 1.3 2013/04/27 16:43:13 joerg Exp $	*/
+/*	$NetBSD: s_scalbln.c,v 1.4 2013/04/27 17:19:47 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2004 David Schultz <d...@freebsd.org>
@@ -30,7 +30,7 @@
 #if 0
 __FBSDID("$FreeBSD: src/lib/msun/src/s_scalbln.c,v 1.2 2005/03/07 04:57:50 das Exp $");
 #else
-__RCSID("$NetBSD: s_scalbln.c,v 1.3 2013/04/27 16:43:13 joerg Exp $");
+__RCSID("$NetBSD: s_scalbln.c,v 1.4 2013/04/27 17:19:47 joerg Exp $");
 #endif
 
 #include "namespace.h"
@@ -42,32 +42,24 @@ __weak_alias(scalbln, _scalbln)
 double
 scalbln (double x, long n)
 {
-	int in;
 
-	in = (int)n;
-	if (in != n) {
-		if (n > 0)
-			in = INT_MAX;
-		else
-			in = INT_MIN;
-	}
-	return (scalbn(x, in));
+	if (n > INT_MAX)
+		n = INT_MAX;
+	else if (n < INT_MIN)
+		n = INT_MIN;
+	return (scalbn(x, n));
 }
 
 __weak_alias(scalblnf, _scalblnf)
 float
 scalblnf (float x, long n)
 {
-	int in;
 
-	in = (int)n;
-	if (in != n) {
-		if (n > 0)
-			in = INT_MAX;
-		else
-			in = INT_MIN;
-	}
-	return (scalbnf(x, in));
+	if (n > INT_MAX)
+		n = INT_MAX;
+	else if (n < INT_MIN)
+		n = INT_MIN;
+	return (scalbnf(x, n));
 }
 
 #ifndef _LP64
@@ -76,15 +68,10 @@ __weak_alias(scalblnl, _scalblnl)
 long double
 scalblnl (long double x, long n)
 {
-	int in;
-
-	in = (int)n;
-	if (in != n) {
-		if (n > 0)
-			in = INT_MAX;
-		else
-			in = INT_MIN;
-	}
-	return (scalbnl(x, (int)n));
+	if (n > INT_MAX)
+		n = INT_MAX;
+	else if (n < INT_MIN)
+		n = INT_MIN;
+	return (scalbnl(x, n));
 }
 #endif

Reply via email to