Arduino Reboots it self when it receives a text message it has to process

The sms_text[100] char is containing the text in the incoming text.

To break things down:

  position=sms.IsSMSPresent(SMS_ALL);
    onOroff();
    if(position >= 1)
    {
      nySMS = true;
      hentSMS = sms.GetSMS(position, phone_number, sms_text, 100);

This bit of code checks to see, if there is a new message.

This bit, checks to see, if the text in the message is equivalent to "VP", and replies with a text, depending on the heater to be on (True) or off (false)

if (!strcmp(sms_text, "VP")) {
        varme();
        if (OnOff == true) {
          sms.SendSMS(phone_number, "Varmepumpe Startet");
        }
        else if(OnOff == false) {
          sms.SendSMS(phone_number, "Varmepumpe Slukket"); 
        }
        nySMS = false;
        }

This next bit activates the 22 degrees function, returning a text stating if the function is activated or not, and if the heater is on or off:

if(!strcmp(sms_text, "22")) {
          tempStyring22 = !tempStyring22;
          tempStyring15 = false;
          if (tempStyring22 == true) {
            if (OnOff == true) {
           sms.SendSMS(phone_number, "Du har aktiveret 22 graders styring, varmepumpe er on"); 
            }
           else if (OnOff == false) {
           sms.SendSMS(phone_number, "Du har aktiveret 22 graders styring, varmepumpe er off"); 
            }
          }

          else if (tempStyring22 == false) {
           if (OnOff == true) {
           sms.SendSMS(phone_number, "22 graders styring aktiv varmepumpe er on"); 
            }
           else if (OnOff == false) {
           sms.SendSMS(phone_number, "22 graders styring deaktiv, varmepumpe er off"); 
            }
          }
        //
         nySMS = false;
      }

This next bit is the same as above, only this time its 15 degrees instead of 22:

if(!strcmp(sms_text, "15")) {
          tempStyring15 = !tempStyring15;
          tempStyring22 = false;
          if (tempStyring15 == true) {
            if (OnOff == true) {
           sms.SendSMS(phone_number, "Du har aktiveret 15 graders styring, varmepumpe er on"); 
            }
           else if (OnOff == false) {
           sms.SendSMS(phone_number, "Du har aktiveret 15 graders styring, varmepumpe er off"); 
            }
          }

          else if (tempStyring15 == false) {
           if (OnOff == true) {
           sms.SendSMS(phone_number, "15 graders styring aktiv varmepumpe er on"); 
            }
           else if (OnOff == false) {
           sms.SendSMS(phone_number, "15 graders styring deaktiv, varmepumpe er off"); 
            }
          }
         nySMS = false;

This next bit, is a status text. It should reply the current status of the system, wether or not a temperature control is activated, what temperature there is now, and if the heater is on or off:

      if(!strcmp(sms_text, "Status")) {
       tempSens.requestTemperatures();
       float temperature = tempSens.getTempCByIndex(0);
       int intTemperature = (int) temperature + 0.5;
       String stringOne = "Temperaturen er lige nu: ";
       stringOne += intTemperature;
       if (OnOff == true) {
         stringOne += "\nVarmepumpen er On"; 
       }
       else {
         stringOne += "\nVarmepumpen er Off"; 
       }
       if (tempStyring22 == true) {
        stringOne += "\n22 Graders funktion aktiv";
       }
       
       else if (tempStyring15 == true) {
        stringOne += "\n15 Graders funktion aktiv"; 
       }
       
       else{
        stringOne += "\nIngen temp. funktioner aktiv";
       }
       char textSMS[150];
       stringOne.toCharArray(textSMS, 150);
       sms.SendSMS(phone_number, textSMS);  
      }

The next bit, deletes the message it received, to make room for a new:

      if(sms.DeleteSMS(position)){
       Serial.println("\nSMS Slettet"); 
      }
    }
    delay(2000);
  }

And here is the functions, for the temperature control:

  if (tempStyring22 == true) {
     tempSens.requestTemperatures();
     float temperature = tempSens.getTempCByIndex(0);
     delay(100); //just here to slow down the output so it is easier to read
     if (temperature <= 21) {
      if (OnOff == false){
       varme();
       }
     }
     if (temperature >= 22) {
      if (OnOff == true){
       varme();
       }
     }
   }
     
   if (tempStyring15 == true) {
     tempSens.requestTemperatures();
     float temperature = tempSens.getTempCByIndex(0);
     delay(100); //just here to slow down the output so it is easier to read
     if (temperature <= 14) {
      if (OnOff == false){
       varme();
       }
     }
     if (temperature >= 15) {
      if (OnOff == true){
       varme();
       OnOff = !OnOff;
       }
     }
  }
}

Could this be a memory problem with the arduino? it tells me i'm only using 19.064 bytes out of 32.256, but still?