Mercurial > pidgin.yaz
view plugins/error.c @ 842:2804dc8e9ba0
[gaim-migrate @ 852]
HTML widget is faster, more stable :)
oh my cs teacher would be so proud. here's a description of the old algorithm and my new improved one:
old algorithm: print as much text as we can. then try printing the rest of it.
with at 4000 character message, this usually leads to a stack about 200 functions deep. depending on the amound of memory you have, this may have lead to a segfault.
new algorithm: if we can print it all, print it all. if we can't { if we've already printed stuff on this line then finish printing the line. print the first half of the stuff, then the second half. }
this usually leads to a stack no deeper than about 20 functions. it also causes the widget to be much faster.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 05 Sep 2000 21:30:43 +0000 |
parents | 59d97cd251ff |
children | ece2d1543b20 |
line wrap: on
line source
#define GAIM_PLUGINS #include "gaim.h" #include <stdlib.h> #include <time.h> int gaim_plugin_init(void *handle) { int error; /* so here, we load any callbacks, do the normal stuff */ srand(time(NULL)); error = rand() % 3; error -= 2; /* there's a 1 in 3 chance there *won't* be an error :) */ return error; } void gaim_plugin_remove() { /* this only gets called if we get loaded successfully, and then * unloaded. */ } char *gaim_plugin_error(int error) { /* by the time we've gotten here, all our callbacks are removed. * we just have to deal with what the error was (as defined by us) * and do any other clean-up stuff we need to do. */ switch (error) { case -1: do_error_dialog("I'm calling the error myself", "MY BAD"); return NULL; case -2: return "Internal plugin error: exiting."; } /* we should never get here */ return NULL; } char *name() { return "Error Tester " VERSION ; } char *description() { return "A nice little program that causes error messages"; }