This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: gcc 3.3.1 problem


Hi Gerry,

you return a pointer to an object on the stack, that is no longer valid after leaving your function. So any value printed in main is undefined and you can get any result.

Regards,
Jörg

Gerry Reno wrote on Monday, September 29, 2003 9:34 AM:

>   I'm having a problem with gcc 3.3.1.  Here is a sample
> program that demos the problem:
> 
> // test.c
> #include <stdio.h>
> #include <windows.h>
> 
> typedef struct abc {
>   HANDLE h1;
>   HANDLE h2;
> } XYZ;
> 
> XYZ * somefunc () {
>   XYZ xyz;
>   XYZ *ptr = &xyz;
> 
>   ptr->h1 = (HANDLE) 99;
>   ptr->h2 = (HANDLE) 88;
> 
> printf("somefunc: ptr->h1 = %d\n",ptr->h1);
> printf("somefunc: ptr->h2 = %d\n",ptr->h2);
> 
>   return (ptr);
> }
> 
> int main(void) {
>   XYZ *ptr2;
> 
>   ptr2 = somefunc ();
> printf("main: ptr2->h1 = %d\n",ptr2->h1);
> printf("main: ptr2->h2 = %d\n",ptr2->h2);
> 
> }
> ------------------------------
> 
> -- results --
> somefunc: ptr->h1 = 99
> somefunc: ptr->h2 = 88
> main: ptr2->h1 = 99
> main: ptr2->h2 = 99
> 
> 
>   And sometimes it will give me really large values for main: ptr2-h2
> like 4043574. 
> 
> ----------------------
> Env:
> Cygwin 1.5.5
> gcc 3.3.1
> 
> 
> 
> 
> =====
> Gerry Reno
> mailto: grenoml at@ yahoo dot. com
> (if mail bounces please retry later - spam rapidly fills up mailbox)
> 
> __________________________________
> Do you Yahoo!?
> The New Yahoo! Shopping - with improved product search
> http://shopping.yahoo.com 

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]