Welcome! Log In Create A New Profile

Advanced

[PATCH] ngx_str_set

Mons Anderson
May 20, 2010 07:20AM
Предлагаю немного пропатчить ngx_str_set

простой пример, когда оригинальная версия работать не будет.

if (...) ngx_str_set(...);

или
if (...) ngx_str_set(...);
else ...;


тестовый пример, сравнивающий 2 подхода:

#include <stdio.h>

#ifdef CORRECT
#define test(a,b) do { printf("%s\n",a);printf("%s\n",b); } while (0)
#endif
#ifndef CORRECT
#define test(a,b) printf("%s\n",a);printf("%s\n",b)
#endif

int main () {
test("visible 1.1","visible 1.2");
if (0) test("invisible 2.1","invisible 2.2");
return 0;
}

/**************************/

$ gcc -o test test.c && ./test
visible 1.1
visible 1.2
invisible 2.2

$ gcc -DCORRECT -o test test.c && ./test
visible 1.1
visible 1.2

при этом если у нас if/else, то с оригинальным вариантом все еще хуже:

/**************************/

#include <stdio.h>

#ifdef CORRECT
#define test(a,b) do { printf("%s\n",a);printf("%s\n",b); } while (0)
#endif
#ifndef CORRECT
#define test(a,b) printf("%s\n",a);printf("%s\n",b)
#endif

int main () {
test("visible 1.1","visible 1.2");
if (0) test("invisible 2.1","invisible 2.2");
else test("visible 3.1","visible 3.2");
return 0;
}

/**************************/

$ gcc -o test test.c && ./test
test.c: In function 'main':
test.c:13: error: expected expression before 'else'

$ gcc -DCORRECT -o test test.c && ./test
visible 1.1
visible 1.2
visible 3.1
visible 3.2


--
Mons Anderson aka Vladimir Perepelitsa
<mons@cpan.org> / #99779956 / quanth@irc.freenode.net
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

[PATCH] ngx_str_set

Mons Anderson May 20, 2010 07:20AM

Re: [PATCH] ngx_str_set

Igor Sysoev May 20, 2010 07:30AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 106
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready