Reading buttons crashes my code? [SOLVED - THANKS]

Hello, I am trying to create a menu and to that end I need to read 4 buttons - however, if I use the following button reading code the program ends up freezing within seconds (40-ish)

void read_buttons(int timer){ 
  
 int superduper_timer = (millis() + timer);
 while(millis() < superduper_timer){
   if(digitalRead(mode_buttonpin) == LOW){
     MODE_BUTTON = 1;
     delay(100);
   }
   if(digitalRead(back_buttonpin) == LOW){
     BACK_BUTTON = 1;
     delay(100);
   }   
   if(digitalRead(select_buttonpin) == LOW){
     SELECT_BUTTON = 1;
     delay(100);
   }   
   if(digitalRead(forward_buttonpin) == LOW){
     FORWARD_BUTTON = 1;
     delay(100);
   }
   delay(10); // pityful attempt at slowing down the code in hopes that it will not crash this time;
 }
 }

Video of the screen freezing:
Freezing display - YouTube @ 33 seconds

Could anyone tell me where I should be looking to solve my problem please? =) (or a safer way to read inputs?)

superduper_timer should be declared as unsigned long int.

o_o ... it works now, thanks a lot! =)

The funny part being: ~800 lines of code: almost all values set to unsigned long to make it easier for me to transmit data wirelessly, 99% of the time -> useless.

Then the one place where it NEEDED to be unsigned long? Nope, int! x)

Thanks again, have a nice day o/