Skip to content

Commit 15ce979

Browse files
Merge pull request #178 from ChemCryst/fix_crashes_on_error_conditions
Fix crashes on error conditions
2 parents d4621ea + b0f8278 commit 15ce979

File tree

14 files changed

+97
-41
lines changed

14 files changed

+97
-41
lines changed

baregrep.exe

-246 KB
Binary file not shown.

bits/Diffractometers/datain.for

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -579,14 +579,24 @@ C
579579
MAXK=MAX(MAXK,IK)
580580
MAXL=MAX(MAXL,IL)
581581
C
582-
if (( rf .lt. 9999. ).and.( rc .lt. 9999. )) then
583-
write ( noutr, '(3I4,3F10.3)' )ih,ik,il,rf,rs, rc
582+
if ( rf .lt. -999999. ) then
583+
write ( noutr, '(A)')
584+
1 'F8 format overflow. fcf values too negative'
585+
write ( noutr, '(3I4,3F12.0)' )ih,ik,il,rf,rs, rc
586+
else if ( rf .lt. -99999. ) then
587+
write ( noutr, '(3I4,3F8.0)' )ih,ik,il,rf,rs, rc
588+
else if ( rf .lt. -9999. ) then
589+
write ( noutr, '(3I4,3F8.1)' )ih,ik,il,rf,rs, rc
590+
else if ( rf .lt. -999. ) then
591+
write ( noutr, '(3I4,3F8.2)' )ih,ik,il,rf,rs, rc
592+
else if (( rf .lt. 9999. ).and.( rc .lt. 9999. )) then
593+
write ( noutr, '(3I4,3F8.3)' )ih,ik,il,rf,rs, rc
584594
else if (( rf .lt. 99999. ).and.( rc .lt. 99999. )) then
585-
write ( noutr, '(3I4,3F10.2)' )ih,ik,il,rf,rs, rc
595+
write ( noutr, '(3I4,3F8.2)' )ih,ik,il,rf,rs, rc
586596
else if (( rf .lt. 999999. ).and.( rc .lt. 999999. )) then
587-
write ( noutr, '(3I4,3F10.1)' )ih,ik,il,rf,rs, rc
597+
write ( noutr, '(3I4,3F8.1)' )ih,ik,il,rf,rs, rc
588598
else if (( rf .lt. 9999999. ).and.( rc .lt. 9999999. )) then
589-
write ( noutr, '(3I4,3F10.0)' )ih,ik,il,rf,rs, rc
599+
write ( noutr, '(3I4,3F8.0)' )ih,ik,il,rf,rs, rc
590600
else
591601
write ( noutr, '(A)')
592602
1 'F8 format overflow. fcf values too big'
@@ -1273,7 +1283,7 @@ c2018 write(noutf,'(a)')'#OPEN FRN2 ARCHIVE-HKL.CIF'
12731283
write(NOUTF,'(a)')'READ F''S=FO NCOEF=6 TYPE=FIXED CHECK=NO'
12741284
end if
12751285
write(NOUTF,'(a)')'INPUT H K L /FO/ SIGMA(/FO/) /Fc/'
1276-
write(NOUTF,'(a)')'FORMAT (3F4.0, 3F10.0)'
1286+
write(NOUTF,'(a)')'FORMAT (3F4.0, 3F8.0)'
12771287
write(NOUTF,'(a)')'STORE NCOEF=7'
12781288
write(NOUTF,'(a)')'OUTP INDI /FO/ SIG RATIO/J CORR SERI /Fc/'
12791289
write(NOUTF,'(a)')'END'

bits/Diffractometers/diffin.F

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ subroutine no_stdout_buffer() bind(c)
353353
if (i .le. 0) i=len_trim(output_name)+1
354354
lfr = i-1
355355
file_root = outfil(1:lfr)
356-
output_hkl = outfil(1:lfr)//'.hkl'
356+
output_hkl = outfil(1:lfr)//'v2.hkl'
357357
c
358358
c
359359
C....... Open our file for output of CRYSTALS instructions:
@@ -363,7 +363,7 @@ subroutine no_stdout_buffer() bind(c)
363363
call noillegal(option) !remove illegal characters
364364
output_name = option(1:LEN_TRIM(option))//extbl
365365
outfil = output_name
366-
output_hkl = option(1:LEN_TRIM(option))//'.hkl'
366+
output_hkl = option(1:LEN_TRIM(option))//'v2.hkl'
367367
OPEN (NOUTF,FILE=output_name,STATUS='UNKNOWN')
368368
OPEN (NCIF,FILE=output_name(1:len_trim(output_name))//'.cif',
369369
1 STATUS='UNKNOWN')
@@ -375,7 +375,7 @@ subroutine no_stdout_buffer() bind(c)
375375
c 1 STATUS='UNKNOWN')
376376
end if
377377
output_hkl = file_root(1:lfr)
378-
output_hkl(lfr+1:lfr+9) ='00000.hkl'
378+
output_hkl(lfr+1:lfr+11) ='00000v2.hkl'
379379
write(output_hkl(lfr+1:lfr+5), '(i5.5)') ndata
380380
write(ntext,'(a,a)')'HKL-file= ', output_hkl
381381
else
@@ -391,7 +391,7 @@ subroutine no_stdout_buffer() bind(c)
391391
lfn=12
392392
endif
393393
endif
394-
output_hkl = output_name(1:lfn-4)//'.hkl'
394+
output_hkl = output_name(1:lfn-4)//'v2.hkl'
395395
OPEN (NOUTF,FILE=output_name(1:lfn),STATUS='UNKNOWN')
396396
c OPEN (NCIF,FILE=output_name(1:lfn-4)//'.cif',STATUS='UNKNOWN')
397397
end if

crystals/distangl.F

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7522,6 +7522,18 @@ SUBROUTINE XBCALC(INTERN)
75227522
C
75237523
9900 CONTINUE
75247524
C -- ERRORS
7525+
IF ( INTERN .NE. 2 ) THEN
7526+
IF ( KEXIST(41) .LE. 0 ) THEN
7527+
C -- C R E A T E A N E W L I S T 4 1:
7528+
IDWZAP = 0
7529+
CALL XFILL (IDWZAP, ICOM41, IDIM41)
7530+
N41B = 0 !Bond list, no entries
7531+
N41A = 0 !Atom list, no entries
7532+
N41D = 1 !Dependencies, one record.
7533+
CALL XCELST ( 41, ICOM41, IDIM41 )
7534+
CALL XWLSTD (41,ICOM41,IDIM41,-1,-1)
7535+
END IF
7536+
END IF
75257537
CALL XOPMSG ( IOPBND , IOPABN , 0 )
75267538
GOTO 3350
75277539
9910 CONTINUE

crystals/list12.F

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,9 @@ SUBROUTINE XPRC12
368368
C--SET THE HEADER BLOCK LENGTHS
369369
LH121 = 3
370370
LH122=5
371+
C--SET THE INPUT AND OUTPUT LIST TYPES
372+
KD=12
373+
KE=22
371374
C--SET THE MAXIMUM NUMBER OF BLOCKS PLUS ONE
372375
MAXBLK=N22B
373376
C--SET THE MAXIMUM NUMBER OF 'EQUIVALENCES' PLUS ONE IN EACH BLOCK
@@ -554,9 +557,6 @@ SUBROUTINE XPRC12
554557
M5 = M5 + MD5
555558
100 CONTINUE
556559
C
557-
C--SET THE INPUT AND OUTPUT LIST TYPES
558-
KD=12
559-
KE=22
560560
C----- SET NO. OF 'GROUP' REFINEMENT DIRECTIVES TO ZERO
561561
NGPDIR = 0
562562
IF ( IERFLG .LT. 0 ) GO TO 9900

crystals/list16.F

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,13 @@ SUBROUTINE XPRC16
457457
c ICOM05(I)=NOWT
458458
c1050 CONTINUE
459459
C Load list 5 into core (allows checking during processing).
460-
CALL XFAL05
461-
IF(IERFLG .LT. 0) GOTO 9900
460+
IF ( KEXIST(5) .GE. 1 ) THEN
461+
CALL XFAL05
462+
IF(IERFLG .LT. 0) GOTO 9900
463+
ELSE
464+
L5 = 0
465+
N5 = 0
466+
END IF
462467

463468
C - Clear all the bits that restraints could possibly set.
464469
IMASK = NOT ( OR ( KBREFB(4), KBREFB(6) ))
@@ -2030,7 +2035,7 @@ SUBROUTINE XPRC16
20302035
CALL XTCO(KE)
20312036

20322037
CRICJUN03 - store the list 5, with modified Spare values.
2033-
CALL XSTR05 (5,-1,-1)
2038+
IF ( N5 .GT. 0 ) CALL XSTR05 (5,-1,-1)
20342039
6020 CONTINUE
20352040

20362041

crystals/modify5.F

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,12 +1192,14 @@ SUBROUTINE XMOD05
11921192
K5L = L5
11931193
K5S = -MD5
11941194
END IF
1195+
KCLASH = 0
11951196
C Outer loop over all but last atom.
11961197
DO K5A = K5F,K5L-K5S,K5S
11971198
C Inner loop over atoms between current and last.
11981199
DO K5B = K5A+K5S,K5L,K5S
11991200
IF ( ( ISTORE(K5A) .EQ. ISTORE(K5B) ) .AND.
12001201
1 ( NINT(STORE(K5A+1)) .EQ. NINT(STORE(K5B+1)) ) ) THEN
1202+
KCLASH = KCLASH + 1
12011203
CALL CATSTR(STORE(K5A),STORE(K5A+1),1,1,0,0,0,CATOM1,LATOM1)
12021204
call outcol(9)
12031205
WRITE (CMON,'(''{I Clash detected, atom: '',A)')
@@ -1219,6 +1221,7 @@ SUBROUTINE XMOD05
12191221
END DO
12201222
END DO
12211223
IERROR=IERNOP ! This function should not cause a warning if no changes to L5.
1224+
ISTAT = KSCTRN ( 1 , 'EDIT:CLASH' , KCLASH, 1 )
12221225
GO TO 100
12231226
C
12241227
C-C-C

crystals/reductio.F

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1931,6 +1931,8 @@ FUNCTION KMERGE(IULN)
19311931
IF(NREF-1)1000,1000,1050
19321932
C--ONLY ONE CONTRIBUTOR
19331933
1000 CONTINUE
1934+
ymode = 0.0
1935+
sigmode = 0.0
19341936
JFO=IFO+IREF
19351937
C--IREF acts like M6 IN LOCAL STACK
19361938
WORK(5) = STORE(JFO) !FO OR FOT

script/clashfix.ssc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
%SCRIPT CLASHFIX
2+
% VARIABLE INTEGER EDIT:CLASH
3+
%% variables used by the question box below
4+
% VARIABLE CHARACTER QTITLE BUTTOK BUTTXX QLINE1 QLINE2
5+
% VARIABLE LOGICAL ANSWER
6+
% COPY '#EDIT'
7+
% COPY 'CLASH REPORT'
8+
% COPY 'END'
9+
% IF EDIT:CLASH .GT. 0 THEN
10+
%%
11+
% EVALUATE QTITLE = 'Duplicate atom name(s) detected'
12+
% EVALUATE QLINE1 = 'Found ' // CHARACTER EDIT:CLASH // ' duplicate atom names.'
13+
% EVALUATE QLINE2 = 'Fix this now? Atoms will be renumbered.'
14+
% EVALUATE BUTTOK = '&Yes'
15+
% EVALUATE BUTTXX = '&No'
16+
% COPY '#SCRIPT XQUESTIO'
17+
% IF ANSWER .EQ. TRUE THEN
18+
% COPY '#EDIT'
19+
% COPY 'CLASH FIXLATTER'
20+
% COPY 'END'
21+
{I Clashes fixed. Check your atom numbering scheme still has logical consistency.
22+
% END IF
23+
% END IF
24+
%END SCRIPT

script/diffexec.ssc

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -103,30 +103,28 @@ Files INITIAL.* will be created in your logs/ folder. They may be important.
103103
% end if
104104
%%
105105
% if ( exists 2 .eq. 1 ) .and. ( exists 5 .eq. 1 ) then
106-
{S sort out atoms
106+
{S Sort atoms and renumber H atoms.
107107
%% variables used by the question box below
108-
% VARIABLE CHARACTER QTITLE BUTTOK BUTTXX QLINE1 QLINE2
109-
% VARIABLE LOGICAL ANSWER
110-
%%
111-
% EVALUATE QTITLE = 'Renumber Atoms?'
112-
% EVALUATE QLINE1 = 'Do you want to change atom numbers to CRYSTALS system?'
113-
% EVALUATE QLINE2 = 'This WILL invalidate any restraints imported from SHELXL.'
114-
% EVALUATE BUTTOK = '&Yes'
115-
% EVALUATE BUTTXX = '&No'
116-
% COPY '#SCRIPT XQUESTIO'
117-
% IF ANSWER .EQ. TRUE THEN
118-
% COPY '#EDIT'
119-
% COPY 'INSERT ELECTRON'
120-
% COPY 'DSORT SPARE'
121-
% COPY 'KEEP 1 ALL'
122-
% COPY 'END'
123-
% COPY '#SCRIPT XCENTRE'
108+
% VARIABLE CHARACTER QTITLE BUTTOK BUTTXX QLINE1 QLINE2
109+
% EVALUATE QTITLE = 'Renumber and recentre atoms?'
110+
% EVALUATE QLINE1 = 'Do you want to change hydrogen atom serials to CRYSTALS default?'
111+
% EVALUATE QLINE2 = 'This WILL invalidate any restraints imported from SHELXL.'
112+
% EVALUATE BUTTXX = '&Renumber'
113+
% EVALUATE BUTTOK = '&Leave unchanged'
114+
% COPY '#SCRIPT XQUESTIO'
115+
% IF ANSWER .EQ. FALSE THEN
116+
% COPY '#EDIT'
117+
% COPY 'INSERT ELECTRON'
118+
% COPY 'DSORT SPARE'
119+
% COPY 'KEEP 1 ALL'
120+
% COPY 'END'
121+
% COPY '#SCRIPT XCENTRE'
124122
%% RESOLVE H ATOMS
125-
% COPY '#SCRIPT HNAM'
126-
% copy '#EDIT'
127-
% COPY 'SORT SERIAL'
128-
% COPY 'END'
129-
% END IF
123+
% COPY '#SCRIPT HNAM'
124+
% copy '#EDIT'
125+
% COPY 'SORT SERIAL'
126+
% COPY 'END'
127+
% END IF
130128
%%
131129
% end if
132130
%%

script/xwrite5.ssc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
%% _______________________________________________________________
1919
%%
2020
% BLOCK
21+
%% quick check for clashing atom names
22+
% COPY '#SCRIPT CLASHFIX'
2123
%% clear out the old ride and restraint files
2224
% VARIABLE LOGICAL FD
2325
% IF ( FILEEXISTS ( 'ridedat.12' ) ) THEN

test_suite/LINUXGH.org/td-syst-sort.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ END
190190
1 -13 0 302.80 4.92 38.64 2 $ 6.96 54.64 303.50 0.02
191191

192192

193-
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 303.50 0.00
193+
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 0.00 0.00
194194

195195
338.56 -11.22 57.78 0.00 0.10E+01 0 5.9
196196
361.00 11.22 59.66 22.44 0.10E+01 0 6.1

test_suite/LINUXGHGUI.org/td-syst-sort.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ END
191191
1 -13 0 302.80 4.92 38.64 2 $ 6.96 54.64 303.50 0.02
192192

193193

194-
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 303.50 0.00
194+
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 0.00 0.00
195195

196196
338.56 -11.22 57.78 0.00 0.10E+01 0 5.9
197197
361.00 11.22 59.66 22.44 0.10E+01 0 6.1

test_suite/MIN64GHGUI.org/td-syst-sort.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ END
191191
1 -13 0 302.80 4.92 38.64 2 $ 6.96 54.64 303.50 0.02
192192

193193

194-
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 303.50 0.00
194+
1 -13 0 302.76 54.64 54.64 1 $ 54.64 54.64 0.00 0.00
195195

196196
338.56 -11.22 57.78 0.00 0.10E+01 0 5.9
197197
361.00 11.22 59.66 22.44 0.10E+01 0 6.1

0 commit comments

Comments
 (0)