Entity artefacts?

Derek Atkins warlord at MIT.EDU
Sat Mar 19 11:50:43 EST 2005

First guess:  the Account Tree is creating a top-level Account to "hold" the
top-level AccountGroup, so when you iterate you're seeing this "temporary"
account in the list.


Quoting Neil Williams <linux at codehelp.co.uk>:

> I'm coming across v.odd errors in some QofBook's created in G2.
>     <object type="Account" count="5">
>       <string type="desc"/>
>       <string type="code"/>
>       <string type="notes"/>
>       <string type="name"/>
>       <guid type="guid">8ce6c6798adfde73b480a889250ed3d9</guid>
>       <boolean type="tax-related-p">false</boolean>
>       <boolean type="non-standard-scu">false</boolean>
>       <gint32 type="smallest-commodity-unit">100</gint32>
>       <gint32 type="account-type">4294967295</gint32>
>     </object>
> Obviously account-type is invalid and I can check for this, but why (and how)
> is this entity being created in a normal GnuCash book? 
> (the enum as string is a separate solution and this will take care of errors
> like this by converting to a string. In this case, it would return NULL, with
> valid accounts it would return const char* "Bank" etc. and the parameter 
> would then be <string type="account-type">Bank</string>.)
> When I create books of non-GnuCash objects, I never get artefacts like this.
> GnuCash itself will ignore these - probably because there's no link to an 
> AccountGroup that I can find. When I iterate over all objects in the book, 
> the artefact shows up.
> This false account causes a problematic segmentation fault too.
> Try to read (QofEntity*)ent->e_type for the entity that corresponds to this 
> account in the book and it is non-NULL but seg faults.
> g_return_if_fail(ent->e_type != NULL); is no protection, so I find it 
> difficult to check and avoid the error and seg faults aren't acceptable!!
> I've tried with old books, new books, I always get errors like this. It's not
> just accounts either, I'm getting exactly the same error with GncInvoice - 
> print ent->e_type in gdb gives "Cannot access memory at position ..."
> yet print ent == NULL prints 0 - FALSE.
> and print ent prints (QofEntity*)
> Any ideas what's going on?
> -- 
> Neil Williams
> =============
> http://www.dcglug.org.uk/
> http://www.nosoftwarepatents.com/
> http://sourceforge.net/projects/isbnsearch/
> http://www.neil.williamsleesmill.me.uk/
> http://www.biglumber.com/x/web?qs=0x8801094A28BCB3E3

       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available

More information about the gnucash-devel mailing list