BUG/MEDIUM: standard: itao_str/idx and quote_str/idx must be thread-local

This bug has an impact on the stats applet and easily leads to a crash of HAProxy.

This is specific to threads, no backport is needed.
diff --git a/include/common/standard.h b/include/common/standard.h
index d88599d..9819c9a 100644
--- a/include/common/standard.h
+++ b/include/common/standard.h
@@ -92,7 +92,7 @@
 	int host_len;
 };
 
-extern int itoa_idx; /* index of next itoa_str to use */
+extern THREAD_LOCAL int itoa_idx; /* index of next itoa_str to use */
 
 /*
  * copies at most <size-1> chars from <src> to <dst>. Last char is always
@@ -107,7 +107,7 @@
  * This function simply returns a locally allocated string containing
  * the ascii representation for number 'n' in decimal.
  */
-extern char itoa_str[][171];
+extern THREAD_LOCAL char itoa_str[][171];
 extern char *ultoa_r(unsigned long n, char *buffer, int size);
 extern char *lltoa_r(long long int n, char *buffer, int size);
 extern char *sltoa_r(long n, char *buffer, int size);
diff --git a/src/standard.c b/src/standard.c
index 34d4148..9be7832 100644
--- a/src/standard.c
+++ b/src/standard.c
@@ -46,14 +46,14 @@
  * '<span class="rls"></span>' around digits at positions 3N+1 in order
  * to add spacing at up to 6 positions : 18 446 744 073 709 551 615
  */
-char itoa_str[NB_ITOA_STR][171];
-int itoa_idx = 0; /* index of next itoa_str to use */
+THREAD_LOCAL char itoa_str[NB_ITOA_STR][171];
+THREAD_LOCAL int itoa_idx = 0; /* index of next itoa_str to use */
 
 /* sometimes we'll need to quote strings (eg: in stats), and we don't expect
  * to quote strings larger than a max configuration line.
  */
-char quoted_str[NB_QSTR][QSTR_SIZE + 1];
-int quoted_idx = 0;
+THREAD_LOCAL char quoted_str[NB_QSTR][QSTR_SIZE + 1];
+THREAD_LOCAL int quoted_idx = 0;
 
 /*
  * unsigned long long ASCII representation