Bug in (timer 'symbol)

Started by pjot, August 12, 2005, 01:16:27 PM

Previous topic - Next topic

pjot

Hi,



According to the manual, (timer 'symbol) should return the elapsed time of the timer with newLisp 8.6.1, which I am currently using.



(define (callback)
(println "Callback...")(set 'done true))

(timer 'callback 5.0)

(while (not done)
(println (timer 'callback))
(sleep 100))


So the result of this program should be a climbing series of values. This is OK in Windows. In Linux however, this is the result:


Quote
peter@Solarstriker:~/programming/newlisp$ ./bla.lsp

0

1.89

1.78

1.67

1.56

1.45

1.34

1.23

1.12

1.01

2.9

2.79

2.68

2.57

2.46

2.35

2.24

2.13

2.02

3.91

3.8

3.69

3.58

3.47

3.36

3.25

3.14

3.03

4.92

4.81

4.7

4.59

4.48

4.37

4.26

4.15

4.04

5.93

5.82

5.71

5.6

5.49

5.38

5.27

5.16

5.05

Callback...


Peter

pjot

#1
Line 4826 in the file 'newlisp.c' should look like this (only added the brackets here):



seconds = duration - (outVal.it_value.tv_sec + outVal.it_value.tv_usec / 1000000.0);


Now the result of the testprogram looks like:
Quote
0

0.11

0.22

0.33

0.44

0.55

0.66

0.77

0.88

0.99

1.1

1.21

1.32

1.43

1.54

1.65

1.76

1.87

1.98

2.09

2.2

2.31

2.42

2.53

2.64

2.75

2.86

2.97

3.08

3.19

3.3

3.41

3.52

3.63

3.74

3.85

3.96

4.07

4.18

4.29

4.4

4.51

4.62

4.73

4.84

4.95

Callback...


Peter

newdep

#2
Nice one ! thanks ;-)
-- (define? (Cornflakes))

Lutz

#3
Thanks for the fix Peter. I will make a development release during the coming week and for mid September we will have a new official release.



Lutz