I was leaking memory until I called CLEAR DLLS ... I thought the memory leak was a foxpro DLL handling thing, but it was my DLL, I fixed the leak so I can skip the CLEAR DLLS after all
Thanks for all the help, much appreciated
blrk I forgot how to program in C++
Sent by FoxWeb Support on 04/02/2004 12:13:03 PM:
You are right about the fact the CLEAR DLLS seems to clear all DLLs in VFP 6. What's the reason why you want to clear your DLL declaration? It does not really use any resources, so you can simply comment out the CLEAR DLLS statement.
Sent by Joe Cosby on 04/02/2004 11:43:49 AM:
Is there a complete list of DLL's that foxweb DECLARE's by any chance?
I am looking into this in more detail ... we are running Foxpro 6.0 and I was using the 7.0 docs, stupid, granted ... the CLEAR DLLS call is apparently clearing all DLLs in 6.0
If I don't do the CLEAR I get a memory leak, but then I will have to redeclare all of the DLLs. I did "DISPLAY DLLS" from a running Foxweb session and there are 20 alltogether ...
Sent by FoxWeb Support on 04/01/2004 04:56:13 PM:
The function 'urlencodefunction' is contained in fwdll.dll and is declared using the following command:
DECLARE INTEGER UrlEncode IN fwdll.dll AS UrlEncodeFunction STRING @
It's possible that there's a naming conflict, or it's possible that the call to CLEAR DLLS clears more than it should. I would start by removing this call and see if it corrects the problem. You can also re-declare the function after you are done with your blowfish calls.
Sent by Joe Cosby on 04/01/2004 04:17:50 PM:
I have built a DLL with functions for Blowfish encryption. Testing this from Foxpro, everything works fine. But now when I do calls to the same DLL from Foxweb, I am getting this weird error:
Error #: 1
Message: File 'urlencodefunction.prg' does not exist.
Program: procedure classserver1.urlencode fwserverobject.fxp
Line #: 427
I checked the error log and the prev_prog is "urlencode.fxp", which is not something of ours.
In a little more detail; from the foxweb script, a class object is created and in the constructor it executes:
DECLARE INTEGER Blowfish_blowfishInit IN Blowfish
DECLARE Blowfish_setPassword IN Blowfish INTEGER bfPointer, STRING @ newPword
DECLARE STRING Blowfish_encrypt IN Blowfish INTEGER bfPointer, STRING @ encryptText, INTEGER nTextBytes
DECLARE STRING Blowfish_decrypt IN Blowfish INTEGER bfPointer, STRING @ encryptText, INTEGER nTextBytes
DECLARE Blowfish_destroy IN Blowfish INTEGER bfPointer
THIS.nBlowfishPointer = Blowfish_blowfishInit()
Then the script calls Blowfish_encrypt() through the object and afterwards RELEASE the class object, which calls Blowfish_destroy() and
CLEAR DLLS "Blowfish"
I'm really not sure where the conflict is occuring in all this ... whether I have stomped a name somewhere or something in clearing the DLL is causing a problem with DLLs Foxweb is using for some weird reason ... or what.
Thanks for any help, I am kind of under the gun on this project and didn't anticipate anything like this ...