home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11643 < prev    next >
Encoding:
Text File  |  1992-07-27  |  2.1 KB  |  51 lines

  1. Path: sparky!uunet!mcsun!ub4b!mble.philips.be!stern
  2. From: stern@mble.philips.be
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Is it MY problem...or is it Borland's?
  5. Message-ID: <1992Jul27.092039.190@mble.philips.be>
  6. Date: 27 Jul 92 09:20:39 MEWT
  7. References: <1992Jul25.162844.18778@uwm.edu>
  8. Organization: MBLE , Brussels, Belgium
  9. Lines: 40
  10.  
  11. In article <1992Jul25.162844.18778@uwm.edu>, rca@csd4.csd.uwm.edu (Robert C Allender) writes:
  12. > I'm VERY new to C, but I can usually hold my own by R(ing)TFM.  This is 
  13. > different.  I've checked through Borland's FAX document catalog (I use 
  14. > Borland's C++ 3.0, but I use the standard C mode), ALL the manuals, a few 
  15. > 3rd party books on Borland C ... nothing.  Here's the problem:
  16. > I initialize a char * in main() and pass it to a function that gets a string, 
  17. > passing the address of the string back to main().  If I try to print the 
  18. > string back at main(), it works.  I pass the char * to the next function, and
  19. > I can print the string at the beginning of that function, but by the end of 
  20. > it, the string is garbage.  If I then pass the value to main() and send it to
  21. > yet aother function, the array is empty.  I can put checks in anywhere and
  22. > find the strlen() to be correct at ANY of the points where it won't print, 
  23. > but the values get corrupt and then dissappear.  What am I doing wrong?
  24. > Here's the boiled-down code...
  25.  
  26. [deleted]
  27.  
  28. > char * scrollbox(char,int,int);
  29.  
  30. [deleted]
  31.  
  32. > main() {
  33. >   char drive, *c;
  34. >     c = scrollbox(drive,61,10);  <---- This gets a directory, etc. 
  35. >   
  36. >   clear_half(c);                 <-- can print the array here BEFORE the end
  37. >                      of the function, else it's garbage.
  38.  
  39. This is a bug in your program:
  40.  
  41. As the string containing the directory is local to function scrollbox,
  42. it is located on the stack. If you access it immediately after calling 
  43. the function there are many chances that this value has not been modified
  44. (it is obviously a non-standard side-effect); this is what happens here.
  45. Once you call another function the stack is overwritten.
  46.  
  47. That's all folks
  48.  
  49. --  Marc Stern  <stern@mble.philips.be>
  50.