| 
| 
| 
| #79379 - 2003-01-08 06:27 PM  iif() stack overflow exception "problem"? |  
| Lee Wilmott   Starting to like KiXtart
 
 Registered:  2002-09-17
 Posts: 106
 Loc:  Bristol, UK
 | 
I am using KiX version 4.20 Beta 1.
 I wrote the following Exp() function some time ago which I find very helpful for use with binary bit manipulation.
 
 
 code:Anyway, since the release of 4.20 albeit Beta, I thought I could re-write it using the new iif() function.
 Function Exp($Base, $Power);Returns a base value raised to the specified power
 If $Power = 0
 $Exp = 1
 Else
 $Exp = Exp($Base, $Power - 1) * $Base
 EndIf
 EndFunction
 
 
 However, the following code produces a "Stack overflow exception" error...
 
 
 code:Admittedly the function names are different (so I could test them in the same script file), but aren't these two functions programatically identical?
 Function Exp2($Base, $Power);Returns a base value raised to the specified power
 $Exp2 = iif($Power = 0, 1, Exp2($Base, $Power - 1) * $Base)
 EndFunction
 
 
 Should I be receiving "Stack Overflow" errors?
 
 Lee
 |  
| Top |  |  |  |  
| 
| 
| #79381 - 2003-01-08 07:02 PM  Re: iif() stack overflow exception "problem"? |  
| Shawn   Administrator
 
       
   Registered:  1999-08-13
 Posts: 8611
 | 
Lee,
 I just converted your UDF to VBS and was utterly shocked when I got exactly the same error !!! Would have bet the farm that this was a bug.
 
 C:\t.vbs(8, 2) Microsoft VBScript runtime error: Out of stack space: 'Exp'
 
 Heres the code:
 
 
 code:There must be more going on here than meets the eye !!!
  WScript.Echo Exp(5,5)
 
 Function Exp(Base, Power)
 
 ' Returns a base value raised to the specified power
 
 Exp = IIF(Power = 0, 1, Exp(Base, Power - 1) * Base)
 
 ' If Power = 0 Then
 '  Exp = 1
 ' Else
 '  Exp = Exp(Base, Power - 1) * Base
 ' End If
 
 End Function
 
 
 -Shawn
 
 [ 08. January 2003, 19:02: Message edited by: Shawn ]
 |  
| Top |  |  |  |  
| 
| 
| #79382 - 2003-01-08 07:04 PM  Re: iif() stack overflow exception "problem"? |  
| Lee Wilmott   Starting to like KiXtart
 
 Registered:  2002-09-17
 Posts: 106
 Loc:  Bristol, UK
 | 
Shawn,
 I didn't think of testing it with VB!
 
 Anyway, yeah that is interesting.
 
 Do I assume that you guys agree with me? - this shouldn't return a stack overflow error!
 
 Lee
 
 |  
| Top |  |  |  |  
| 
| 
| #79391 - 2003-01-08 08:08 PM  Re: iif() stack overflow exception "problem"? |  
| Shawn   Administrator
 
       
   Registered:  1999-08-13
 Posts: 8611
 | 
Heres another proof I guess:
 
 code:Output is:
 break on
 $x = iif(1=1,FuncOne(),FuncTwo())
 
 exit 1
 
 function FuncOne()
 ?"FuncOne..."
 endfunction
 
 function FuncTwo()
 ?"FuncTwo..."
 endfunction
 
 
 
 
 code:
 C:\>kix32 t
 FuncOne...
 FuncTwo...
 
 
 [ 08. January 2003, 20:11: Message edited by: Shawn ]
 |  
| Top |  |  |  |  
| 
| 
| #79394 - 2003-01-08 10:10 PM  Re: iif() stack overflow exception "problem"? |  
| Lee Wilmott   Starting to like KiXtart
 
 Registered:  2002-09-17
 Posts: 106
 Loc:  Bristol, UK
 | 
Interesting topic - I think!
 Shawn,
 
 Your earlier example...
 
 
 quote:Which display's the two strings defined in BOTH functions really surprised me!
 code:
 $x = iif(1=1,FuncOne(),FuncTwo()) 
 
 
 I 100% agree with you, iif() is clearly NOT the same as if ... else ... .
 
 Although I see no reason why this shouldn't work - I also believe that KiX should perform in the same way that VB does - for interoperability reasons if nothing else.
 
 Having said all that, I would be very interested in Ruud's views on this matter.
 
 Lee
 |  
| Top |  |  |  |  
| 
| 
| #79398 - 2003-01-08 11:19 PM  Re: iif() stack overflow exception "problem"? |  
| Shawn   Administrator
 
       
   Registered:  1999-08-13
 Posts: 8611
 | 
So really all IIF really is is this:
 
 code:And to my mind, IIF is only really usefull for quick one-shot conditional assignments - using throw-away expressions. Comments ?
 Break On
 $x = IIF2(1=1,1+1,2+2)
 
 Exit 1
 
 Function IIF2($x,$y,$z)
 
 If $x
 $IIF2=$y
 Else
 $IIF2=$z
 EndIf
 
 EndFunction
 
 
 [ 09. January 2003, 01:25: Message edited by: Shawn ]
 |  
| Top |  |  |  |  
 Moderator:  ShaneEP, Arend_, Jochen, Radimus, Glenn Barnas, Allen, Ruud van Velsen, Mart
 
 | 
| 
 
| 0 registered
and 360 anonymous users online. 
 | 
 |  |