This is the mail archive of the cygwin@sourceware.cygnus.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]

Re: Segfault when call kernel32 function


On Thu, 6 Jan 2000, Jamie Guinan wrote:

> 
> I tried the same program with Mumit's gcc-2.95.2 distribution
> native on Win98.  Same problem, "BuildCommDCB()" just keeps
> crashing.  Both CRTDLL and MSVCRT versions. 
> 
> I think I can work around it with a combination of GetCommState()
> and SetCommState(), but I just find it weird that BuildCommDCB
> fails.  Oh, well.  :/
> 

I believe the bug is in Windows itself. Even though the prototype
says that you can supply the first parameter as LPCSTR (ie., 
`const char *'), Windows kernel will try to play with the string
it in place (possibly reformatting it, or something of that sort).

Solution:

1. Use -fwritable-strings option when compiling. Bad.

2. Use a static or allocated buffer and pass that instead.
   
   static char mode_str[] = "9600,...";
   BuildCommDCB (mode_str, &dcb);

Regards,
Mumit



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


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