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); free(tmp_pattern); free(tmp_text); PG_RETURN_BOOL(matches); } -- Felix E. Klee ---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings