浏览代码

validate parameters given to Launchpad::setColor()

Fabian Peter Hammerle 11 年之前
父节点
当前提交
115ba3eb55
共有 1 个文件被更改,包括 16 次插入0 次删除
  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)