From c03ab933956178e6fcc5a2d01976380a818c3357 Mon Sep 17 00:00:00 2001 From: otya128 Date: Tue, 20 Dec 2016 21:13:26 +0900 Subject: [PATCH] Fix DISPLAY --- SMILEBASIC/builtinfunctions.d | 2 ++ SMILEBASIC/petitcomputer.d | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index 3eaf928..a8f76fb 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -414,6 +414,8 @@ class BuiltinFunction } static void DISPLAY(PetitComputer p, int display) { + if (p.currentDisplay.count <= display || display < 0) + throw new OutOfRange("DISPLAY", 1); p.display(display); } static int DISPLAY(PetitComputer p) diff --git a/SMILEBASIC/petitcomputer.d b/SMILEBASIC/petitcomputer.d index 50befe0..cda43b7 100644 --- a/SMILEBASIC/petitcomputer.d +++ b/SMILEBASIC/petitcomputer.d @@ -174,6 +174,10 @@ struct Display SDL_Rect[] rect; Size windowSize; int yoffset; + int count() + { + return cast(int)rect.length; + } } class RingBuffer(T) {