Re: [Vala] Creating bindings for Oracle OCI

Ooops.. Resending, didn't realize this didn't go to the list.. my

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!

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]