diff --git a/libhtmlw/HTML.c b/libhtmlw/HTML.c
index 59698e6..08feca6 100644
--- a/libhtmlw/HTML.c
+++ b/libhtmlw/HTML.c
@@ -741,13 +741,13 @@ XGCValues values;
hw->html.bgclip_SAVE=None;
if (NoBodyImages(hw)) {
- return;
+ return 0;
}
/* ??? Why is this here? */
hw->html.view->core.background_pixel = hw->html.background_SAVE ;
- return;
+ return 0;
}
int NoBodyImages(Widget w) {
@@ -770,7 +770,7 @@ unsigned long valuemask;
XGCValues values;
if (!bgname || !*bgname || !(hw->html.drawGC)) {
- return;
+ return 0;
}
if (hw->html.delay_images==True || currently_delaying_images==1) {
@@ -814,7 +814,7 @@ XGCValues values;
}
}
- return;
+ return 0;
}
@@ -832,7 +832,7 @@ hw_do_color(Widget w, char *att, char *cname)
int i;
if (!att || !*att || !cname || !*cname) {
- return;
+ return -1;
}
cmap = hw->core.colormap;
@@ -847,14 +847,14 @@ hw_do_color(Widget w, char *att, char *cname)
if(!allocated){
if(*val=='#') val++;
if (!*val) {
- return;
+ return -1;
}
if (strlen(val)>=6) {
/* Must be valid hex */
for (i=0; i<6; i++) {
if (!strchr("0123456789AaBbCcDdEeFf",val[i])) {
- return;
+ return -1;
}
}
@@ -875,10 +875,10 @@ hw_do_color(Widget w, char *att, char *cname)
col.flags = DoRed | DoGreen | DoBlue;
if (!XAllocColor(XtDisplay(w),cmap,&col)) {
- return;
+ return -1;
}
} else {
- return;
+ return -1;
}
}
@@ -910,7 +910,7 @@ hw_do_color(Widget w, char *att, char *cname)
hw->html.activeAnchor_fg = col.pixel;
}
- return;
+ return -1;
}
void
diff --git a/libhtmlw/HTMLformat.c b/libhtmlw/HTMLformat.c
index 26cef60..0b46f74 100644
--- a/libhtmlw/HTMLformat.c
+++ b/libhtmlw/HTMLformat.c
@@ -2706,7 +2706,7 @@ int extra;
if ((*mptr)->is_end) {
/* end of table */
- return;
+ return 0;
}
extra = 10;
@@ -2715,7 +2715,7 @@ int extra;
SetElement(hw, E_TABLE, currentFont, *x, *y, (char *) mptr, NULL, NULL, IMAGE_DEFAULT_BORDER);
if (!Current->table_data) {
/* no table */
- return;
+ return 0;
}
Current->alignment = ALIGN_MIDDLE;
Current->width = Current->table_data->width;
diff --git a/libhtmlw/HTMLtable.c b/libhtmlw/HTMLtable.c
index 3edcd26..84b92c4 100644
--- a/libhtmlw/HTMLtable.c
+++ b/libhtmlw/HTMLtable.c
@@ -1078,11 +1078,11 @@ int baseLine;
int yy;
if (field->type == F_NONE) { /* nothing to display in field */
- return;
+ return -1;
}
if (field->type != F_TEXT) { /* routine only does text at this time */
- return;
+ return -1;
}
/* adjust for aesthetic surounding space */
diff --git a/libwww2/HTNews.c b/libwww2/HTNews.c
index 4d46c4a..6f9d125 100644
--- a/libwww2/HTNews.c
+++ b/libwww2/HTNews.c
@@ -960,7 +960,7 @@ int NNTPgetarthdrs(char *art,char **ref, char **grp, char **subj, char **from)
char ch = *p++ = HTGetCharacter ();
if (ch==(char)EOF) {
abort_socket(); /* End of file, close socket */
- return; /* End of file on response */
+ return -1; /* End of file on response */
}
if ((ch == LF)
diff --git a/src/main.c b/src/main.c
index 93c30f4..f69f0cc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -71,6 +71,7 @@
#include
#include
#include
+#include
/* swp */
#define _KCMS_H_
@@ -231,6 +232,14 @@ main (int argc, char **argv, char **envp)
/* Since we're doing lots of TCP, just ignore SIGPIPE altogether. */
signal (SIGPIPE, SIG_IGN);
+#ifdef M_CHECK_ACTION
+ /* some code here has the habit of freeing pointers twice. The glibc
+ catches this and causes the program to abort. In order to make the
+ code somehow work, we turn aborting the program off. */
+
+ mallopt(M_CHECK_ACTION,5);
+#endif
+
InitChildProcessor();
MoCCIPreInitialize();