X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:reply-to:date:message-id:subject :from:to:content-type; q=dns; s=default; b=DuDlxsaYq90wgeqzmrcpi JT0ZDLss42dxPHhdb/T7HyvhOEu6LbHogMLZgL06C1tpne6tPCTqQjrsTYXJZPhC Qfw2c9YkMP88BJoCWhTe4ASVuKrbjAPe7mDBijcx2tTsFHFieMA+hVT0mON3taqx j/3x0i3XH0CIlnDHyeukls= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:reply-to:date:message-id:subject :from:to:content-type; s=default; bh=xlp/8f10mdvi3KN150BacnlLUaA =; b=eupNt3HOaoWoM5M7n0YC1NwUhm5wJA+oARI3iK9yqPygs+DQGUmulHHdoLa 5BPD9jJhmA+735KReO0ersjCWDqMW6BhC3Q9q8VnseVvUTBha4o+WrjkuJsD9NSh gvJfsjyeuEUzL6hG1Gufur+NFktKJW4dpNGfoBhK8N2YpKKY= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ie0-f180.google.com MIME-Version: 1.0 X-Received: by 10.107.19.38 with SMTP id b38mr17922260ioj.35.1422993030647; Tue, 03 Feb 2015 11:50:30 -0800 (PST) Reply-To: thomas DOT wuillemin AT gmail DOT com Date: Tue, 3 Feb 2015 16:50:30 -0300 Message-ID: Subject: Problem with vprintf () in Clang 3.4.2 From: Thomas Wuillemin To: cygwin AT cygwin DOT com Content-Type: text/plain; charset=UTF-8 Dear all, While running some simple tests with the C vprintf function, I detected different results between Gcc and Clang , where Clang seems to be badly wrong. Here is the faulty code that leads to a reproducible error (at least in my configuration): ---------------------------------------------------- #include #include void my_print1(char *format, ...) { va_list arguments; va_start ( arguments, format ); vprintf ( format, arguments ); va_end ( arguments ); } void my_print2(char *format, ...) { va_list arguments; int value; va_start ( arguments, format ); value = va_arg ( arguments, int ); printf ( format, value ); va_end ( arguments ); } int main (int argc, char* argv[]) { (void) argc; (void) argv; my_print1 ( "Variadic argument found (should be 1): %d\n", 1 ); my_print2 ( "Variadic argument found (should be 1): %d\n", 1 ); return 0; } ---------------------------------------------------- Compiled with gcc, the results are good: $ gcc -Wall -Wextra -pedantic -g -O0 dummy.c -o dummy.exe $ ./dummy.exe Variadic argument found (should be 1): 1 Variadic argument found (should be 1): 1 Compiled with Clang, the results show a little issue: $ clang -Wall -Wextra -pedantic -g -O0 dummy.c -o dummy.exe $ ./dummy.exe Variadic argument found (should be 1): 2271896 Variadic argument found (should be 1): 1 Working with char*, leads equally to various corruptions. Is anyone already experienced such issue (or could confirm it) ? Best regards, Thomas -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple