Fix Crash when writing on stdin
[scilab.git] / scilab / modules / output_stream / sci_gateway / fortran / intprint.f
1 c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 c Copyright (C) INRIA
3 c Copyright (C) ENPC
4 c
5 c This file must be used under the terms of the CeCILL.
6 c This source file is licensed as described in the file COPYING, which
7 c you should have received as part of this distribution.  The terms
8 c are also available at
9 c http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10       subroutine intprint
11       INCLUDE 'stack.h'
12 c
13       integer top2,tops
14       integer mode(2)
15       logical opened
16       integer iadr
17 c
18       save opened,lunit
19 c
20 c
21       iadr(l)=l+l-1
22 c
23       if(rhs.le.1) then
24          call error(42)
25          return
26       endif
27       if(lhs.gt.1) then
28          call error(41)
29          return
30       endif
31
32 c     opening file
33       top2 = top
34       top = top-rhs+1
35       il=iadr(lstk(top))
36       mode(1)=0
37       mode(2)=0
38       call v2unit(top,mode,lunit,opened,ierr)
39       if(ierr.gt.0) return
40 c
41 c     try to write on stdin
42       if(lunit.eq.5) then
43          call error(49)
44          return
45       endif
46 c
47       l = lct(2)
48       if(lunit.ne.wte) then
49          lct(2) = 0
50       endif
51       top=top2
52       do 26 i=2,rhs
53          tops=top
54          call print(idstk(1,top),tops,lunit)
55          top=top-1
56  26   continue
57       lct(2) = l
58       istk(il)=0
59       if(.not.opened) then
60          mode(1)=0
61          mode(2)=0
62          call clunit(-lunit,buf,mode)
63       endif
64       go to 999
65  999  return
66       end