After much effort, I discovered a cause for your error that I do not
understand but have worked around.  The workaround is appropriate for you as
well.
 
I get exactly your symptoms which is a stack corruption generally followed
by a bad return or as we used to say many many moons ago: a bad branch.
 
These are notoriously difficult bugs to track down.  In my case, I make a
handful of flavours of a binary for each of the last few releases of the
API.  Only very few odd flavours would blow and those that did would change
with different tests.
 
In any event, here is what I have discovered and it is simple:
 
If I allocate an AR object, I cannot give it to AR to free.  I must
replicate the similarly named AR function within my code for those objects
that I allocate.  If ARS (the API) allocates an object, then I should use
the FreeAR f() to free it.
 
Hope this helps,
Ben Chernys

Senior Software Architect
Software Tool House Inc.

Canada / Deutschland / Germany
Mobile:      +49 162 175 0956   GMT + 1
Email:        <mailto:[EMAIL PROTECTED]>
mailto:[EMAIL PROTECTED]
Web:          <http://www.softwaretoolhouse.com/>
http://www.softwaretoolhouse.com

A free notepad for Diary fields:
 <http://www.softwaretoolhouse.com/downloads/DiaryFieldEditor.htm>
http://www.softwaretoolhouse.com/downloads/DiaryFieldEditor.htm
An ARS integration, import, batch facility:
 <http://www.softwaretoolhouse.com/products/SthMupd>
http://www.softwaretoolhouse.com/products/SthMupd
  


  _____  

From: Action Request System discussion list(ARSList)
[mailto:[EMAIL PROTECTED] On Behalf Of Beketov Danila
Sent: May 29, 2007 7:52 AM
To: [email protected]
Subject: Problem with function FreeARQualifierStruct


** 

Hi

 

I have a problem with Remedy C API function "FreeARQualifierStruct". I need
to load qualifier structure manually, see follow:

 

   ARQualifierStruct     qualifier;

 

   memset((char *) &qualifier, '\0', sizeof(ARQualifierStruct));

   qualifier.operation = AR_COND_OP_REL_OP;

   qualifier.u.relOp = (ARRelOpStruct *) malloc(sizeof(ARRelOpStruct));

   qualifier.u.relOp->operation = (unsigned int) AR_REL_OP_EQUAL;

   qualifier.u.relOp->operandLeft.tag = (unsigned int) AR_FIELD;

   qualifier.u.relOp->operandLeft.u.fieldId = (ARInternalId) 7;

   qualifier.u.relOp->operandRight.tag = (unsigned int) AR_VALUE;

   qualifier.u.relOp->operandRight.u.value.dataType = AR_DATA_TYPE_INTEGER;

   qualifier.u.relOp->operandRight.u.value.u.intVal = (ARLong32) 1;

 

If execute "FreeARQualifierStruct(&qualifier, FALSE);" I get the follow
error:

 



 

It's mean I have a problem with feeing allocated memory, but when I load
qualifier with "ARLoadARQualifierStruct" I get the same qualifier that was
defined above (I check it in debugger), and "FreeARQualifierStruct" exicute
without errors. I don't understand this situation. What I do wrong?

 

Sorry for my bad english

__20060125_______________________This posting was submitted with HTML in
it___ 

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where the 
Answers Are"

<<image002.jpg>>

Reply via email to