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&#174; 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

Reply via email to