You’re correct but you have an off by 1 error.
First, the genie grants the wish.
NumWishes=0;
Then, having completed the wish, the genie deducts that wish from the remaining wishes.
NumWishes–;
And to complete the thought,
Lastly, the genie checks if the lampholder is out of wishes
If(NumWishes==0) {…}
(255==0) evaluates to False, so we fall past that check.
Genie in the OP image would’ve said “OK you now have 0 wishes”.
Since he said 255, my interpretation is a valid solution.
Of course, if we’re talking hypothetical wish gaining prevention methods, I’d just have a check before,
previous_wishes = wishes;
{Do all the wish things. wishes ends up with a 255 because of our shenanigans}
If(wishes>=previous_wishes) wishes = previous_wishes-1;
;If the current number of wishes isnt less than the old number of wishes, set it to the old number and subtract 1
If(wishes==0) {/*TODO: write function to end wish giving sequence*/}