gchar* md5sum = malloc(33);
debug_print("Creating md5sum file: %s\n", md5_file);
- if (md5_hex_digest_file(md5sum, (const unsigned char *) file) == -1)
+ if (md5_hex_digest_file(md5sum, (const unsigned char *) file) == -1) {
+ free(md5sum);
return;
+ }
debug_print("md5sum: %s\n", md5sum);
if ((fd =
- open(md5_file, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR)) == -1)
+ open(md5_file, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR)) == -1) {
+ free(md5sum);
return;
+ }
text = g_strrstr_len(file, strlen(file), "/");
if (text) {
text++;
#endif
void archive_add_file(gchar* path) {
- struct file_info* file = archive_new_file_info();
+ struct file_info* file;
gchar* filename = NULL;
g_return_if_fail(path != NULL);
g_return_if_fail(filename != NULL);
filename++;
+ file = archive_new_file_info();
file->name = g_strdup(filename);
file->path = strip_leading_dot_slash(dirname(path));
archive_add_to_list(file);
if (value == NULL) {
g_warning("cannot allocate memory");
g_hash_table_destroy(table);
- return NULL;
+ table = NULL;
+ goto close_exit;
}
*value = (time_t)seen;
g_hash_table_insert(table, g_strdup(md5sum), value);
break;
case MAILIMF_ERROR_PARSE:
r = mailimf_cfws_parse(message, length, &cur_token);
- if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE))
- return r;
+ if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) {
+ res = r;
+ goto free_display_name;
+ }
break;
default:
- return r;
+ res = r;
+ goto free_display_name;
}
r = mailimf_semi_colon_parse(message, length, &cur_token);
&resent_date);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_FROM:
&resent_from);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_SENDER:
&resent_sender);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_TO:
&resent_to);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_CC:
&resent_cc);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_BCC:
&resent_bcc);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_MSG_ID:
&resent_msg_id);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
default:
res = MAILIMF_ERROR_PARSE;
- goto err;
+ goto free_resent;
}
resent_field = mailimf_resent_field_new(type, resent_date,
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_FROM:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_SENDER:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_REPLY_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_CC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_BCC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_MESSAGE_ID:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_IN_REPLY_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_REFERENCES:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_SUBJECT:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_COMMENTS:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_KEYWORDS:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RETURN_PATH:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_DATE:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_FROM:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_SENDER:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_CC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_BCC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_MSG_ID:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
}
subject, comments, keywords, optional_field);
if (field == NULL) {
res = MAILIMF_ERROR_MEMORY;
- goto free_field;
+ goto free_fields;
}
* result = field;
return MAILIMF_NO_ERROR;
- free_field:
+ free_fields:
if (return_path != NULL)
mailimf_return_free(return_path);
if (resent_date != NULL)
size_t * index,
char ** result)
{
- char * msgid;
+ char * msgid = NULL;
size_t cur_token;
int r;
return r;
r = mailimf_parse_unwanted_msg_id(message, length, &cur_token);
- if (r != MAILIMF_NO_ERROR)
+ if (r != MAILIMF_NO_ERROR) {
+ free(msgid);
return r;
+ }
* result = msgid;
* index = cur_token;
r = mailimf_greater_parse(message, length, &cur_token);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_addr_spec;
}
path = mailimf_path_new(addr_spec);
return MAILIMF_NO_ERROR;
free_addr_spec:
- if (addr_spec == NULL)
+ if (addr_spec != NULL)
mailimf_addr_spec_free(addr_spec);
err:
return res;
subject, NULL, NULL, optional_field);
if (field == NULL) {
res = MAILIMF_ERROR_MEMORY;
- goto free_field;
+ goto free_fields;
}
* result = field;
return MAILIMF_NO_ERROR;
- free_field:
+ free_fields:
if (orig_date != NULL)
mailimf_orig_date_free(orig_date);
if (from != NULL)
r = claws_mailmbox_append_message_list(dest_folder, append_tab);
if (r != MAILMBOX_NO_ERROR) {
res = r;
- goto src_unlock;
+ goto free_list;
}
for(i = 0 ; i < carray_count(append_tab) ; i ++) {
static gboolean python_enabled = FALSE;
+static void *python_dlhandle = NULL;
#ifdef ENABLE_PYTHON
static GString *captured_stdout = NULL;
}
/* This prevents errors such as "undefined symbol: PyExc_ImportError" */
- if (!dlopen(PYTHON_SHARED_LIB, RTLD_NOW | RTLD_GLOBAL))
+ python_dlhandle = dlopen(PYTHON_SHARED_LIB, RTLD_NOW | RTLD_GLOBAL);
+ if (python_dlhandle == NULL)
{
*error = g_strdup_printf("Parasite: Error on dlopen(): %s\n", dlerror());
return 0;
" def flush(self):\n"
" pass\n"
"\n"
- ) == -1)
+ ) == -1) {
+ dlclose(python_dlhandle);
+ python_dlhandle = NULL;
return 0;
+ }
- if (!pygobject_init(-1, -1, -1))
+ if (!pygobject_init(-1, -1, -1)) {
+ dlclose(python_dlhandle);
+ python_dlhandle = NULL;
return 0;
+ }
pygtk = PyImport_ImportModule("gtk");
}
} else {
*error = g_strdup("Parasite: Could not import gtk");
+ dlclose(python_dlhandle);
+ python_dlhandle = NULL;
return 0;
}
return !0;
}
+void
+parasite_python_done(void)
+{
+#ifdef ENABLE_PYTHON
+ if(python_dlhandle != NULL) {
+ dlclose(python_dlhandle);
+ python_dlhandle = NULL;
+ }
+#endif
+}
+
void
parasite_python_run(const char *command,
ParasitePythonLogger stdout_logger,
typedef void (*ParasitePythonLogger)(const char *text, gpointer user_data);
int parasite_python_init(char **error);
+void parasite_python_done(void);
void parasite_python_run(const char *command,
ParasitePythonLogger stdout_logger,
ParasitePythonLogger stderr_logger,
/* finialize python interpreter */
Py_Finalize();
+ parasite_python_done();
+
debug_print("Python plugin done and unloaded.\n");
return FALSE;
}
fclose(fp);
claws_unlink(tmpfile);
g_free(tmpfile);
+ g_free(enccontent);
return FALSE;
}
if (fclose(fp) == EOF) {
FILE_OP_ERROR(tmpfile, "fclose");
claws_unlink(tmpfile);
g_free(tmpfile);
+ g_free(enccontent);
return FALSE;
}
} else {
const char* kind_string;
- buf = icalmemory_new_buffer(buf_size);
- buf_ptr = buf;
-
icalerror_check_arg_rz( (component!=0), "component");
icalerror_check_arg_rz( (kind!=ICAL_NO_COMPONENT), "component kind is ICAL_NO_COMPONENT");
icalerror_check_arg_rz( (kind_string!=0),"Unknown kind of component");
+ buf = icalmemory_new_buffer(buf_size);
+ buf_ptr = buf;
+
icalmemory_append_string(&buf, &buf_ptr, &buf_size, "BEGIN:");
icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string);
icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline);
out_buf = icalmemory_tmp_copy(buf);
- free(buf);
+ icalmemory_free_buffer(buf);
return out_buf;
}
}
icalvalue* icalvalue_new_x (const char* v){
- struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_X_VALUE);
+ struct icalvalue_impl* impl;
icalerror_check_arg_rz( (v!=0),"v");
-
+ impl = icalvalue_new_impl(ICAL_X_VALUE);
icalvalue_set_x((icalvalue*)impl,v);
return (icalvalue*)impl;
}
printf("%s\n",out);
+ free(out);
+
return 0;
}
if(eq == 0){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(cpy);
return 0;
}
if(kind == ICAL_NO_PARAMETER){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(cpy);
return 0;
}
kind_string == 0)
{
icalerror_set_errno(ICAL_BADARG_ERROR);
+ icalmemory_free_buffer(buf);
return 0;
}
icalmemory_append_string(&buf, &buf_ptr, &buf_size, str);
} else {
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ icalmemory_free_buffer(buf);
return 0;
}
/* Now, copy the buffer to a tmp_buffer, which is safe to give to
the caller without worring about de-allocating it. */
- out_buf = icalmemory_tmp_buffer(strlen(buf));
+ out_buf = icalmemory_tmp_buffer(strlen(buf) + 1);
strcpy(out_buf, buf);
icalmemory_free_buffer(buf);
{
size_t buf_size = 1024;
- char* buf = icalmemory_new_buffer(buf_size);
- char* buf_ptr = buf;
+ char* buf;
+ char* buf_ptr;
icalproperty *prop;
icalcomponent *comp;
int errors = 0;
icalerror_check_arg_rz( (str!=0),"str");
+ buf = icalmemory_new_buffer(buf_size);
+ buf_ptr = buf;
+
/* Is this a HACK or a crafty reuse of code? */
icalmemory_append_string(&buf, &buf_ptr, &buf_size, "BEGIN:VCALENDAR\n");
if(comp == 0){
icalerror_set_errno(ICAL_PARSE_ERROR);
+ icalmemory_free_buffer(buf);
return 0;
}
icalcomponent_remove_property(comp,prop);
icalcomponent_free(comp);
- free(buf);
+ icalmemory_free_buffer(buf);
if(errors > 0){
icalproperty_free(prop);
const char* property_name = 0;
size_t buf_size = 1024;
- char* buf = icalmemory_new_buffer(buf_size);
- char* buf_ptr = buf;
+ char* buf;
+ char* buf_ptr;
icalvalue* value;
char *out_buf;
icalerror_check_arg_rz( (prop!=0),"prop");
+ buf = icalmemory_new_buffer(buf_size);
+ buf_ptr = buf;
/* Append property name */
if (property_name == 0 ) {
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
- return 0;
+ icalmemory_free_buffer(buf);
+ return NULL;
} else {
/* _append_string will automatically grow the buffer if
icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_DAY) ){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
-
+ free(impl);
return 0;
}
if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH)){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
-
- icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH_DAY)){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
-
- icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
if(freq == ICAL_MONTHLY_RECURRENCE &&
icalrecur_one_byrule(impl,BY_WEEK_NO)){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
if(freq == ICAL_WEEKLY_RECURRENCE &&
icalrecur_one_byrule(impl,BY_MONTH_DAY )) {
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
if(freq != ICAL_YEARLY_RECURRENCE &&
icalrecur_one_byrule(impl,BY_YEAR_DAY )) {
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
if(impl->last.day > days_in_month || impl->last.day == 0){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(impl);
return 0;
}
}
-
-
return impl;
}
short day = (short)GPOINTER_TO_INT(pvl_data(i));
impl->days[days_index++] = day;
}
-
+ pvl_free(days);
break;
}
}
}
}
-
}
+ pvl_free(days);
break;
}
}
+ pvl_free(days);
break;
}
if(new_env_str == 0){
icalerror_set_errno(ICAL_NEWFAILED_ERROR);
+ free(orig_tzid);
return savetz;
}
new->data.v_string=icalmemory_strdup(old->data.v_string);
if ( new->data.v_string == 0 ) {
+ icalvalue_free(new);
return 0;
}
new->data.v_recur = malloc(sizeof(struct icalrecurrencetype));
if(new->data.v_recur == 0){
+ icalvalue_free(new);
return 0;
}
char* sspm_lowercase(char* str)
{
char* p = 0;
- char* new = sspm_strdup(str);
+ char* new;
if(str ==0){
return 0;
}
+ new = sspm_strdup(str);
+
for(p = new; *p!=0; p++){
*p = tolower(*p);
}
char *p = strchr(ltype,'/');
if (p==0){
+ free(ltype);
return SSPM_UNKNOWN_MINOR_TYPE;
}
print<<EOM;
/* $prop */
icalproperty* icalproperty_new_${lc}($type v) {
- struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_${uc}_PROPERTY); $pointer_check
+ struct icalproperty_impl *impl;
+ $pointer_check
+ impl = icalproperty_new_impl(ICAL_${uc}_PROPERTY);
icalproperty_set_${lc}((icalproperty*)impl,v);
return (icalproperty*)impl;
}
icalproperty* icalproperty_vanew_${lc}($type v, ...){
va_list args;
- struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_${uc}_PROPERTY); $pointer_check
+ struct icalproperty_impl *impl;
+ $pointer_check
+ impl = icalproperty_new_impl(ICAL_${uc}_PROPERTY);
icalproperty_set_${lc}((icalproperty*)impl,v);
va_start(args,v);
icalproperty_add_parameters(impl, args);
print "\n\n\
icalvalue* icalvalue_new_${lc} ($type v){\
- struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_${uc}_VALUE);\
+ struct icalvalue_impl* impl;\
$pointer_check\
+ impl = icalvalue_new_impl(ICAL_${uc}_VALUE);\
icalvalue_set_${lc}((icalvalue*)impl,v);\
return (icalvalue*)impl;\
}\