Well, the code's there.
The missing if is at 3e462, the then clause is 3e468, the else is 3e46c, and
the return code starts at 3e47a.
Looks like it's just the line numbering information that's getting lost
somehow.
Weird.
George
> //===== M I X E D =====
>
> static Word BuildTextLine(CharPtr dstStr, CharPtr srcStr)
> {
> 0003E436: 4E560000 link a6,#0
> 0003E43A: 2F04 move.l d4,-(sp)
> 0003E43C: 2F03 move.l d3,-(sp)
> Word dstStrLen;
> Word srcStrLen;
> Word copyLen;
>
> dstStrLen = StrLen(dstStr);
> 0003E43E: 2F2E0008 move.l 8(a6),-(sp)
> 0003E442: 4E4F trap #15
> 0003E444: A0C7 _StrLen
> 0003E446: 3600 move.w d0,d3
> srcStrLen = StrLen(srcStr);
> 0003E448: 2F2E000C move.l 12(a6),-(sp)
> 0003E44C: 4E4F trap #15
> 0003E44E: A0C7 _StrLen
> 0003E450: 3800 move.w d0,d4
>
> if(dstStrLen >= 37)
> 0003E452: 0C430025 cmpi.w #37,d3
> 0003E456: 504F addq.w #8,sp
> 0003E458: 6504 bcs.s *+6 ; 0x0003e45e
> return dstStrLen;
> 0003E45A: 3003 move.w d3,d0
> 0003E45C: 601C bra.s *+30 ; 0x0003e47a
>
> //// No code is generated for this source ////
> if( (dstStrLen + srcStrLen) <= 37)
> {
> copyLen = srcStrLen;
> }
> else
> {
> copyLen = (srcStrLen - ( (dstStrLen + srcStrLen) - 37));
> }
> //// No code is generated for this source ////
>
> return copyLen;
> 0003E45E: 3003 move.w d3,d0
> 0003E460: D044 add.w d4,d0
> 0003E462: 0C400025 cmpi.w #37,d0
> 0003E466: 6204 bhi.s *+6 ; 0x0003e46c
> 0003E468: 3004 move.w d4,d0
> 0003E46A: 600E bra.s *+16 ; 0x0003e47a
> 0003E46C: 3003 move.w d3,d0
> 0003E46E: D044 add.w d4,d0
> 0003E470: 0640FFDB addi.w #-37,d0
> 0003E474: 3204 move.w d4,d1
> 0003E476: 9240 sub.w d0,d1
> 0003E478: 3001 move.w d1,d0
>
> 0003E47A: 261F move.l (sp)+,d3
> 0003E47C: 281F move.l (sp)+,d4
> 0003E47E: 4E5E unlk a6
> 0003E480: 4E75 rts
> 0003E482: 8D427569 pack d2,d6,#0x7569
> 0003E486: 6C64 bge.s *+102 ; 0x0003e4ec
> 0003E488: 5465 addq.w #2,-(a5)
> 0003E48A: 7874 moveq #116,d4
> 0003E48C: 4C696E650000 divs.l 0(a1),d5:d6
>