Well, I don't know how the API you're binding works, but in Vala,
string is usually understood as an immutable nul-terminated UTF-8
encoded text. Maybe you're using something the wrong way?

I suppose it would be easier for you if you actually learned C better
first, then learned exactly how Vala translates to C.

Maybe you can attach your work so far along with a link to the C
documentation. That way someone could figure out what exactly is going
wrong. I suppose it could be me, but I'm not really that experienced
with Vala myself, yet.

2009/6/17 Shawn Ferris <shawn.fer...@gmail.com>:
> I'm sorry to keep pestering.. but if I omit the asterick, nothing
> changes.. it still aborts.. What I did get to work, sorta, was to omit
> the 'out'.. initially I got the error 'error: use of possibly unassigned
> local variable `errbuf'' which I got around by declaring errbuf as
> 'string errbuf = ""'.. now, the buffer is filled, but with only 7
> characters of the error:
>
> ORA-121
>
> which should be:
>
> ORA-12154: TNS:could not resolve the connect identifier specified
>
> Which I can get if I change the bufsiz arg from '(int)sizeof(string)' to
> 512.. but I then it's worse as I also get:
>
> *** glibc detected *** ./x: free(): invalid next size (fast):
> 0x0000000000688510 ***
>
> Which I presume is because I'm freeing more memory than the string
> actually occupies? (I assume this is true, because if I change it to 16,
> I get more of the message returned, without the error.. but I can't go
> anywhere near the 66 chars needed.. not even 33)
>
> The thing I don't understand is that the docs say if buffsiz isn't big
> enough, OCIErrorGet will return null.. so, I'm lead to believe that
> oracle is getting a big enough buffer, but somehow string is truncating
> it? Should I not be using string?
>
>
> On Wed, 2009-06-17 at 13:24 +0200, Jiří Zárevúcky wrote:
>> You have problem with pointers, again. ;) Once you add "out", it's not
>> a pointer anymore as far as Vala is concerned, so you have to omit the
>> asterisk. You are essentially replacing it.
>>
>> 2009/6/17 Shawn Ferris <shawn.fer...@gmail.com>:
>> > Ooops.. Resending, didn't realize this didn't go to the list.. my
>> > apologies.
>> >
>> > On Tue, 2009-06-16 at 21:44 -0600, Shawn Ferris wrote:
>> >> Man.. I'm so close I can smell it.. I actually have the bindings working
>> >> to the point were I am fetching a value from a table. Unfortunately, the
>> >> way it sits, I'm stuck with ints alone.. as soon as I try to return a
>> >> string, the code aborts.. there's actually two cases where the results
>> >> are the same and I'm assuming the fix for one will fix the other, so
>> >> I'll ask for help on the easier one. In this case, it's the ErrorGet
>> >> function defined as:
>> >>
>> >> sword OCIErrorGet ( void      *hndlp,
>> >>                   ub4        recordno,
>> >>                   OraText       *sqlstate,
>> >>                   ub4        *errcodep,
>> >>                   OraText       *bufp,
>> >>                   ub4        bufsiz,
>> >>                   ub4        type );
>> >>
>> >> My vapi definition:
>> >>
>> >>   [CCode (cname = "OCIErrorGet")]
>> >>   public int ErrorGet (
>> >>     Error*       error,
>> >>     int          record,
>> >>     out string*  sqlstate,
>> >>     out int*     errcode,
>> >>     out string*  buffer,
>> >>     int          buffersz,
>> >>     HType        type
>> >>   );
>> >>
>> >> And a C example:
>> >>
>> >>   text errbuf[512];
>> >>   OCIErrorGet ((dvoid *) errhp, (ub4) 1, (text *) NULL, &errcode,
>> >>             errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);
>> >>
>> >> If I leave off errbuf (which should be the physical message string
>> >> assoctiate to errcode) everything works fine. EG:
>> >>
>> >>     int*    errno;
>> >>     OCI.ErrorGet ( err, 1, null, out errno, null, 0, HType.ERROR);
>> >>     stdout.printf("Error - ORA-%5.5d (%s)\n", (int)errno, action);
>> >>
>> >> I absolutely get the right error code (i can force which error I gen)
>> >> but as soon as I try to touch errbuf the program aborts.. I can not for
>> >> the life of me find the correct way to do this. Can someone point me in
>> >> the right direction? And then, I'll warn you that I'll have at least one
>> >> more email.. but more critique and style.. I'm assuming I haven't
>> >> followed the vala way, but I'm more interested in getting it to work and
>> >> addressing style later.
>> >>
>> >> Thanks for the help!
>> >> SMF
>> >>
>> >
>> > _______________________________________________
>> > Vala-list mailing list
>> > Vala-list@gnome.org
>> > http://mail.gnome.org/mailman/listinfo/vala-list
>> >
>
>
_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to