Em 06-03-2010 00:51, Gustavo Sverzut Barbieri escreveu: > On Thu, Mar 4, 2010 at 8:44 PM, Enlightenment SVN > <no-re...@enlightenment.org> wrote: >> Modified: trunk/elmdentica/src/curl.c >> =================================================================== >> --- trunk/elmdentica/src/curl.c 2010-03-04 22:42:31 UTC (rev 46883) >> +++ trunk/elmdentica/src/curl.c 2010-03-04 23:44:34 UTC (rev 46884) >> @@ -49,7 +49,8 @@ >> >> void show_http_error(long response_code, char * method, char * url) { >> Evas_Object *box=NULL, *frame1=NULL, *label=NULL, *button=NULL; >> - char buf[2100]; >> + int res=0; >> + char *buf=calloc(2100, sizeof(char)); >> >> /* Error Window */ >> error_win = elm_win_inwin_add(win); >> @@ -61,8 +62,13 @@ >> >> /* First frame (with message) */ >> frame1 = elm_frame_add(win); >> - g_sprintf(buf, _("%s got a %ld HTTP >> Response..."), method, response_code); >> - elm_frame_label_set(frame1, buf); >> + if(buf) { >> + res = asprintf(&buf, _("%s got a %ld >> HTTP Response..."), method, response_code); >> + if(res != -1) { >> + elm_frame_label_set(frame1, >> buf); >> + } >> + free(buf); >> + } > > Watch out asprintf() usage, see it's man page. > > by giving asprintf() an allocated buffer, you just lost it's > contents... so a leak of 2100 bytes as you previously calloc()ed it! > > This code should look like: > > char *buf; > int res; /* do NOT set it to zero if you'll set it before first use! */ > > res = asprintf(&buf, _("%s got an %ld HTTP response..."), method, > response_code); > if (res > 0) { > elm_frame_label_set(frame1, buf); > free(buf); > } > > at least you are consistent and make this same error in other places, > so you need to fix them all :-) > > extra notes: > - AFAIK there is no reason why response_code should be a long... > it's http, it will barely get over 1000. > - keep indentation consistent! Your code goes as a cascade, with > new indent levels for no obvious reasons... this makes review harder > (I was wondering if the buf was the same or not.) > > > BR,
Yes, it was due to some tests to try not to use it (maybe making Vincent happier) but it turned out that in the end I'd need to write my_asprintf and decided it wasn't worth it, my first target is GNU/Linux mobile phones :) HTTP stuff will need to be redone, I tried doing it in ecore but without making elmdentica multi-threaded it's not worth the hassle. Rui ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel