Exception Handling in C-Language Functions? - Mailing list pgsql-general

From rahul143
Subject Exception Handling in C-Language Functions?
Date
Msg-id 1354511937712-5734656.post@n5.nabble.com
Whole thread Raw
Responses MODERATOR WARNING Re: Exception Handling in C-Language Functions?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Re: Exception Handling in C-Language Functions?  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-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.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Updateable VIEWS and the manual
Next
From: rahul143
Date:
Subject: Re: MS-Access and Stored procedures