public inbox for [email protected]  
help / color / mirror / Atom feed
From: rahul143 <[email protected]>
To: [email protected]
Subject: Exception Handling in C-Language Functions?
Date: Sun, 2 Dec 2012 21:18:57 -0800 (PST)
Message-ID: <[email protected]> (raw)
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgsql-general>

I have the created a C-Language function (code is below).  Now, I 
wonder: How do I handle exceptions, for example if malloc cannot assign 
the necessary memory?  Do "palloc" and "pfree" handle such a case 
cleanly?  Should I simply use an "assert"? 

#include "postgres.h" 
#include <string.h> 
#include <stdlib.h> 
#include "fmgr.h" 
#include "libinn.h" 

PG_FUNCTION_INFO_V1(ffiinews_uwildmat); 

/* Wrapper for INN's function uwildmat.  Needs parameters in UTF-8. */ 
Datum ffiinews_uwildmat(PG_FUNCTION_ARGS) { 
    VarChar *text = PG_GETARG_VARCHAR_P(0); 
    VarChar *pattern = PG_GETARG_VARCHAR_P(1); 
    int text_len = VARSIZE(text)-VARHDRSZ; 
    int pattern_len = VARSIZE(pattern)-VARHDRSZ; 
    char *tmp_text = (char *)malloc(text_len+1); 
    if (tmp_text == NULL) 
        ; /* What now? */ 
    char *tmp_pattern = (char *)malloc(pattern_len+1); 
    if (tmp_pattern == NULL) 
        ; /* What now? */ 
    strncpy(tmp_text, VARDATA(text), text_len); 
    tmp_text[text_len] = '\0'; 
    strncpy(tmp_pattern, VARDATA(pattern), pattern_len); 
    tmp_pattern[pattern_len] = '\0'; 
    bool matches = uwildmat(tmp_text, tmp_pattern); 



-----




--
View this message in context: http://postgresql.1045698.n5.nabble.com/GENERAL-Exception-Handling-in-C-Language-Functions-tp5734656...
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


-- 
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



view thread (4+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Exception Handling in C-Language Functions?
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox