MATLAB: How to detect null pointers in Generic DLL return values

MATLAB

I am using the Generic DLL interface with a library that may return null pointers as expected results. I would like to check for null values in my LIBPOINTER results in MATLAB.

Best Answer

Starting MATLAB 7.6(R2008a), you can use the function 'IsNull' to verify if a LIBPOINTER is pointing to a null reference.
For previous product releases, read below for any possible workarounds:
The ability to check directly whether a LIBPOINTER is null is not available in MATLAB 7.4 (R2007a) and previous releases. To work around this issue, try to retrieve the pointer's target in a TRY-CATCH block.
Attempting to dereference a null pointer will cause a MATLAB error of type "MATLAB:libpointer:ValueNotDefined". This error usually indicates a null pointer. You can use the following code to check for null pointers:
p = libpointer() % Create a null pointer for testing
try
setdatatype(p, 'int8Ptr', 1, 80) % Use actual expected type and size
get(p) % Try to display data
catch
e = lasterror
if strcmp(e.identifier, 'MATLAB:libpointer:ValueNotDefined')
disp('Null pointer.')
% React to null pointer result
end
end
get(p) % Show pointer target