www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - fdopen bug

Here is a small C program who does not work
when compiled with Digital Mars C/C++ Compiler Version 8.49.4n

It does run Ok with
  VC 6.0
  gcc (MingW and Cygwin)
  Watcom
  lcc-win32

I think it should work with DMC.

--- result execution ---
fileno(stdin):  0040A180 0
fileno(stdout): 0040A1A0 1
fileno(stderr): 0040A1C0 2
Assertion failure: 'fp' on line 17 in file '0.c'

abnormal program termination

--- program ---
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <assert.h>
#include <stdlib.h>
#ifdef __CYGWIN__
#include <unistd.h>
#endif
int main( )
{
  FILE *fp;
  int fd;
  fprintf( stderr, "fileno(stdin):  %p %d\n", stdin, fileno(stdin) );
  fprintf( stderr, "fileno(stdout): %p %d\n", stdout, fileno(stdout) );
  fprintf( stderr, "fileno(stderr): %p %d\n", stderr, fileno(stderr) );
  fd = fileno(stdout); assert(fd!=-1);
  fp = fdopen(fd,"w"); assert(fp);
  fprintf(fp, "Ok.\n");
  fclose(fp);
  return 0;
}
Sep 16 2006