Variables are not independent
Jump to navigation
Jump to search
Description
If you create a copy of a variable by assigning it to another and you use the copy to change it by an API function, both variables are changed.
Example code to demonstrate the problem.
open "Shlwapi.dll" for dll as #shlwapi OrigVar$ = DefaultDir$ CopyVar$ = OrigVar$ print "Before:" print "DefaultDir ... "; DefaultDir$ print "OrigVar ...... "; OrigVar$ print "CopyVar ...... "; CopyVar$ calldll #shlwapi, "PathRemoveFileSpecA", CopyVar$ as ptr, result as long print print "After:" print "DefaultDir ... "; DefaultDir$ print "OrigVar ...... "; OrigVar$ print "CopyVar ...... "; CopyVar$ close #shlwapi end
Example code to work around the problem.
open "Shlwapi.dll" for dll as #shlwapi OrigVar$ = DefaultDir$ ' add an empty string to the variable to get a real copy CopyVar$ = OrigVar$ + "" print "Before:" print "DefaultDir ... "; DefaultDir$ print "OrigVar ...... "; OrigVar$ print "CopyVar ...... "; CopyVar$ calldll #shlwapi, "PathRemoveFileSpecA", CopyVar$ as ptr, result as long print print "After:" print "DefaultDir ... "; DefaultDir$ print "OrigVar ...... "; OrigVar$ print "CopyVar ...... "; CopyVar$ close #shlwapi end