Explorar o código

validate parameters given to Launchpad::setColor()

Fabian Peter Hammerle %!s(int64=11) %!d(string=hai) anos
pai
achega
115ba3eb55
Modificáronse 1 ficheiros con 16 adicións e 0 borrados
  1. 16 0
      Launchpad.cpp

+ 16 - 0
Launchpad.cpp

@@ -1,4 +1,5 @@
 #include "Launchpad.h"
+#include "RtMidi.h"
 #include "MidiMessage.h"
 
 LaunchpadColor::LaunchpadColor()
@@ -77,6 +78,21 @@ const LaunchpadColor& Launchpad::getColor(unsigned char x, unsigned char y) cons
 
 void Launchpad::setColor(unsigned char x, unsigned char y, const LaunchpadColor& color)
 {
+	if(x >= width || y >= height || (x == 8) && (y == 8))
+	{
+		throw RtMidiError(
+			"specified launchpad position is out of range", 
+			RtMidiError::INVALID_PARAMETER
+			);
+	}
+	if(color.red > 3 || color.green > 3)
+	{
+		throw RtMidiError(
+			"specified launchpad color is out of range", 
+			RtMidiError::INVALID_PARAMETER
+			);
+	}
+
 	unsigned char velocity = (color.green << 4) + color.red;
 
 	if(y == 8)