SA0039: Possibili differimenti di null-pointerPermalink

Rileva le posizioni del codice in cui un puntatore nullo è eventualmente dereferenziato

Giustificazione: Un puntatore deve essere controllato prima di ogni dereferenziazione per assicurarsi che non sia uguale a zero. In caso contrario, potrebbe verificarsi una violazione dell'accesso in fase di esecuzione.

Importanza: Alto

Esempio

PROGRAM PLC_PRG
VAR
	ptiVar1:POINTER TO INT;
	ptiVar2:POINTER TO INT;
	ptiVar3:POINTER TO INT;
	iVar:INT;
	iCount :INT;
	iCondition: INT;
END_VAR

iCount := iCount + INT#1;
ptiVar1 := ADR(iVar);
ptiVar1^ := iCondition; // OK - valid reference
ptiVar2^ := iCondition; // SA0039 - null pointer dereferenciation
iVar := ptiVar3^;       // SA0039 - null pointer dereferenciation

--> SA0039: Possible null pointer dereference 'ptiVar2^'
--> SA0039: Possible null pointer dereference 'ptiVar3^'