Have you declared FILL_COLOUR as global elsewhere otherwise it will be 0 in isSameColour!
As you have locked the buffer, why not use WritePixelFast instead of plot.
So each call of Fill calls four more right? This will lead to a big stack in no time at all e.g. 1, 4, 16, 64, 256, 1024, 4096 etc. Maybe BB can't handle it after 20 or so iterations! Come to think of it, it might be an inifinite loop unless your bounds check prevents this. I note that your ifSameColour test in Fill doesn't check the bounds and thus you could be testing an offscreen pixel (by 1 pixel). Also your code keeps drawing over the same pixels, I think, and seems bit inefficient. I thought the idea with filling was to do it in horizontal (or vertical) lines, going across until you reach a boundary (of the shape) or the edge of the screen. But there may be much better methods.
As you have locked the buffer, why not use WritePixelFast instead of plot.
So each call of Fill calls four more right? This will lead to a big stack in no time at all e.g. 1, 4, 16, 64, 256, 1024, 4096 etc. Maybe BB can't handle it after 20 or so iterations! Come to think of it, it might be an inifinite loop unless your bounds check prevents this. I note that your ifSameColour test in Fill doesn't check the bounds and thus you could be testing an offscreen pixel (by 1 pixel). Also your code keeps drawing over the same pixels, I think, and seems bit inefficient. I thought the idea with filling was to do it in horizontal (or vertical) lines, going across until you reach a boundary (of the shape) or the edge of the screen. But there may be much better methods.