Fix out of array bounds access.
Manifested as compiler warnings:
In file included from sketch/Marlin_main.cpp:67:0:
sketch/temperature.h: In function 'bool gcode_M45(bool, int8_t)':
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
sketch/temperature.h: In function 'void long_pause()':
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
sketch/temperature.h: In function 'void process_commands()':
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
sketch/temperature.h:142:30: warning: array subscript is above array bounds [-Warray-bounds]
target_temperature[extruder] = celsius;
^
This commit is contained in:
parent
e6dcbedf82
commit
98ba79e518
|
|
@ -1780,7 +1780,7 @@ int chunkHead = 0;
|
||||||
|
|
||||||
void serial_read_stream() {
|
void serial_read_stream() {
|
||||||
|
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
|
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
|
|
@ -2874,9 +2874,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
|
||||||
if (!onlyZ)
|
if (!onlyZ)
|
||||||
{
|
{
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
setTargetHotend(0, 1);
|
|
||||||
setTargetHotend(0, 2);
|
|
||||||
adjust_bed_reset(); //reset bed level correction
|
adjust_bed_reset(); //reset bed level correction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5262,7 +5260,10 @@ Sigma_Exit:
|
||||||
if(setTargetedHotend(104)){
|
if(setTargetedHotend(104)){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (code_seen('S')) setTargetHotend(code_value(), tmp_extruder);
|
if (code_seen('S'))
|
||||||
|
{
|
||||||
|
setTargetHotendSafe(code_value(), tmp_extruder);
|
||||||
|
}
|
||||||
setWatch();
|
setWatch();
|
||||||
break;
|
break;
|
||||||
case 112: // M112 -Emergency Stop
|
case 112: // M112 -Emergency Stop
|
||||||
|
|
@ -5375,10 +5376,10 @@ Sigma_Exit:
|
||||||
autotemp_enabled=false;
|
autotemp_enabled=false;
|
||||||
#endif
|
#endif
|
||||||
if (code_seen('S')) {
|
if (code_seen('S')) {
|
||||||
setTargetHotend(code_value(), tmp_extruder);
|
setTargetHotendSafe(code_value(), tmp_extruder);
|
||||||
CooldownNoWait = true;
|
CooldownNoWait = true;
|
||||||
} else if (code_seen('R')) {
|
} else if (code_seen('R')) {
|
||||||
setTargetHotend(code_value(), tmp_extruder);
|
setTargetHotendSafe(code_value(), tmp_extruder);
|
||||||
CooldownNoWait = false;
|
CooldownNoWait = false;
|
||||||
}
|
}
|
||||||
#ifdef AUTOTEMP
|
#ifdef AUTOTEMP
|
||||||
|
|
@ -6366,9 +6367,7 @@ bFirst=false;
|
||||||
if (millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) {
|
if (millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) {
|
||||||
lcd_display_message_fullscreen_P(_i("Press knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4
|
lcd_display_message_fullscreen_P(_i("Press knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
wait_for_user_state = 1;
|
wait_for_user_state = 1;
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
setTargetHotend(0, 1);
|
|
||||||
setTargetHotend(0, 2);
|
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
disable_e0();
|
disable_e0();
|
||||||
disable_e1();
|
disable_e1();
|
||||||
|
|
@ -7508,7 +7507,7 @@ static void handleSafetyTimer()
|
||||||
else if (safetyTimer.expired(safetytimer_inactive_time))
|
else if (safetyTimer.expired(safetytimer_inactive_time))
|
||||||
{
|
{
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("Heating disabled by safety timer."));////MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
lcd_show_fullscreen_message_and_wait_P(_i("Heating disabled by safety timer."));////MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -8313,9 +8312,7 @@ void long_pause() //long pause print
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
|
||||||
|
|
||||||
//set nozzle target temperature to 0
|
//set nozzle target temperature to 0
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
setTargetHotend(0, 1);
|
|
||||||
setTargetHotend(0, 2);
|
|
||||||
|
|
||||||
//Move XY to side
|
//Move XY to side
|
||||||
current_position[X_AXIS] = X_PAUSE_POS;
|
current_position[X_AXIS] = X_PAUSE_POS;
|
||||||
|
|
|
||||||
|
|
@ -1373,8 +1373,7 @@ void temp_runaway_stop(bool isPreheat, bool isBed)
|
||||||
|
|
||||||
void disable_heater()
|
void disable_heater()
|
||||||
{
|
{
|
||||||
for(int i=0;i<EXTRUDERS;i++)
|
setAllTargetHotends(0);
|
||||||
setTargetHotend(0,i);
|
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
#if defined(TEMP_0_PIN) && TEMP_0_PIN > -1
|
#if defined(TEMP_0_PIN) && TEMP_0_PIN > -1
|
||||||
target_temperature[0]=0;
|
target_temperature[0]=0;
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,16 @@ FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
|
||||||
target_temperature[extruder] = celsius;
|
target_temperature[extruder] = celsius;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline void setTargetHotendSafe(const float &celsius, uint8_t extruder)
|
||||||
|
{
|
||||||
|
if (extruder<EXTRUDERS) target_temperature[extruder] = celsius;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void setAllTargetHotends(const float &celsius)
|
||||||
|
{
|
||||||
|
for(int i=0;i<EXTRUDERS;i++) setTargetHotend(celsius,i);
|
||||||
|
}
|
||||||
|
|
||||||
FORCE_INLINE void setTargetBed(const float &celsius) {
|
FORCE_INLINE void setTargetBed(const float &celsius) {
|
||||||
target_temperature_bed = celsius;
|
target_temperature_bed = celsius;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1804,9 +1804,7 @@ void lcd_commands()
|
||||||
cancel_heatup = true;
|
cancel_heatup = true;
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
#if !(defined (SNMM) || defined (SNMM_V2))
|
#if !(defined (SNMM) || defined (SNMM_V2))
|
||||||
setTargetHotend(0, 0); //heating when changing filament for multicolor
|
setAllTargetHotends(0);
|
||||||
setTargetHotend(0, 1);
|
|
||||||
setTargetHotend(0, 2);
|
|
||||||
#endif
|
#endif
|
||||||
manage_heater();
|
manage_heater();
|
||||||
custom_message = true;
|
custom_message = true;
|
||||||
|
|
@ -2036,9 +2034,7 @@ void lcd_preheat_flex()
|
||||||
|
|
||||||
void lcd_cooldown()
|
void lcd_cooldown()
|
||||||
{
|
{
|
||||||
setTargetHotend0(0);
|
setAllTargetHotends(0);
|
||||||
setTargetHotend1(0);
|
|
||||||
setTargetHotend2(0);
|
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
|
|
@ -3126,7 +3122,7 @@ void lcd_adjust_z() {
|
||||||
|
|
||||||
bool lcd_wait_for_pinda(float temp) {
|
bool lcd_wait_for_pinda(float temp) {
|
||||||
lcd_set_custom_characters_degree();
|
lcd_set_custom_characters_degree();
|
||||||
setTargetHotend(0, 0);
|
setAllTargetHotends(0);
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
LongTimer pinda_timeout;
|
LongTimer pinda_timeout;
|
||||||
pinda_timeout.start();
|
pinda_timeout.start();
|
||||||
|
|
@ -3166,7 +3162,7 @@ void lcd_wait_for_heater() {
|
||||||
|
|
||||||
void lcd_wait_for_cool_down() {
|
void lcd_wait_for_cool_down() {
|
||||||
lcd_set_custom_characters_degree();
|
lcd_set_custom_characters_degree();
|
||||||
setTargetHotend(0,0);
|
setAllTargetHotends(0);
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) {
|
while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) {
|
||||||
lcd_display_message_fullscreen_P(_i("Waiting for nozzle and bed cooling"));////MSG_WAITING_TEMP c=20 r=3
|
lcd_display_message_fullscreen_P(_i("Waiting for nozzle and bed cooling"));////MSG_WAITING_TEMP c=20 r=3
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue