From cd1d625ab21e741e91be7d2190bb4fd59fab3200 Mon Sep 17 00:00:00 2001
From: kwolekr <kwolekr@minetest.net>
Date: Mon, 27 Apr 2015 01:24:37 -0400
Subject: [PATCH] Replace PRNG assertions with PrngException

---
 src/exceptions.h | 5 +++++
 src/noise.cpp    | 4 +++-
 src/noise.h      | 8 +++++---
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/exceptions.h b/src/exceptions.h
index 0ea4c9350..6bf832828 100644
--- a/src/exceptions.h
+++ b/src/exceptions.h
@@ -120,6 +120,11 @@ class ClientStateError : public BaseException {
 	ClientStateError(std::string s): BaseException(s) {}
 };
 
+class PrngException : public BaseException {
+public:
+	PrngException(std::string s): BaseException(s) {}
+};
+
 /*
 	Some "old-style" interrupts:
 */
diff --git a/src/noise.cpp b/src/noise.cpp
index 4bfc46f15..2e4588124 100644
--- a/src/noise.cpp
+++ b/src/noise.cpp
@@ -115,7 +115,9 @@ u32 PcgRandom::range(u32 bound)
 
 s32 PcgRandom::range(s32 min, s32 max)
 {
-	assert(max >= min);
+	if (max < min)
+		throw PrngException("Invalid range (max < min)");
+
 	u32 bound = max - min + 1;
 	return range(bound) + min;
 }
diff --git a/src/noise.h b/src/noise.h
index d2287835e..5757cbc99 100644
--- a/src/noise.h
+++ b/src/noise.h
@@ -26,8 +26,8 @@
 #ifndef NOISE_HEADER
 #define NOISE_HEADER
 
-#include "debug.h"
 #include "irr_v3d.h"
+#include "exceptions.h"
 #include "util/string.h"
 
 extern FlagDesc flagdesc_noiseparams[];
@@ -56,14 +56,16 @@ class PseudoRandom {
 
 	inline int range(int min, int max)
 	{
-		assert(max >= min);
+		if (max < min)
+			throw PrngException("Invalid range (max < min)");
 		/*
 		Here, we ensure the range is not too large relative to RANDOM_MAX,
 		as otherwise the effects of bias would become noticable.  Unlike
 		PcgRandom, we cannot modify this RNG's range as it would change the
 		output of this RNG for reverse compatibility.
 		*/
-		assert((u32)(max - min) <= (RANDOM_RANGE + 1) / 10);
+		if ((u32)(max - min) > (RANDOM_RANGE + 1) / 10)
+			throw PrngException("Range too large");
 
 		return (next() % (max - min + 1)) + min;
 	}
-- 
GitLab