Browse Source
plotting/grid.c, bug fix, avoid string buffer overflow
plotting/grid.c, bug fix, avoid string buffer overflow
Prevent a crash of example/FFT_test.cir.
Buffer 'buf' in function drawlingrid() has been too small.
Increase 'buf' size, and add some protection.
The example file examples/plot/test-small-plot.cir
shows the limits of plotting:
difference in two numbers at digit 14 is plotted well.
at digit 15 is plotted with bugs.
at digit 16 is reduced to integer.
consider compiling with
-O1 -D_FORTIFY_SOURCE=2
for gcc, and
/GS
for visual studio.
pre-master-46
committed by
rlar
3 changed files with 128 additions and 10 deletions
@ -0,0 +1,116 @@ |
|||||
|
resolution test for plotting |
||||
|
.control |
||||
|
let xvar = vector(4) |
||||
|
let yvar = vector(4) |
||||
|
|
||||
|
* -------------------- |
||||
|
* integer |
||||
|
let yvar[0] = 1.0 |
||||
|
let yvar[1] = 1.0 |
||||
|
let yvar[2] = 1.0 |
||||
|
let yvar[3] = 1.0 |
||||
|
|
||||
|
plot yvar vs xvar title integer 1 |
||||
|
|
||||
|
* -------------------- |
||||
|
* 14 digits |
||||
|
let yvar[0] = 1.0 |
||||
|
let yvar[1] = 1.00000000000001 |
||||
|
let yvar[2] = 0.99999999999999 |
||||
|
let yvar[3] = 1.0 |
||||
|
|
||||
|
plot yvar vs xvar title '14 digits' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 15 digits |
||||
|
let yvar[0] = 1.0 |
||||
|
let yvar[1] = 1.000000000000001 |
||||
|
let yvar[2] = 0.999999999999999 |
||||
|
let yvar[3] = 1.0 |
||||
|
|
||||
|
plot yvar vs xvar title '15 digits' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 16 digits |
||||
|
let yvar[0] = 1.0 |
||||
|
let yvar[1] = 1.0000000000000001 |
||||
|
let yvar[2] = 0.9999999999999999 |
||||
|
let yvar[3] = 1.0 |
||||
|
|
||||
|
plot yvar vs xvar title '16 digits' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 14 digits plus exponent |
||||
|
let yvar[0] = 1.0e-14 |
||||
|
let yvar[1] = 1.00000000000001e-14 |
||||
|
let yvar[2] = 0.99999999999999e-14 |
||||
|
let yvar[3] = 1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title '14 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 15 digits plus exponent |
||||
|
let yvar[0] = 1.0e-14 |
||||
|
let yvar[1] = 1.000000000000001e-14 |
||||
|
let yvar[2] = 0.999999999999999e-14 |
||||
|
let yvar[3] = 1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title '15 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 16 digits plus exponent |
||||
|
let yvar[0] = 1.0e-14 |
||||
|
let yvar[1] = 1.0000000000000001e-14 |
||||
|
let yvar[2] = 0.9999999999999999e-14 |
||||
|
let yvar[3] = 1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title '16 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* negative 14 digits plus exponent |
||||
|
let yvar[0] = -1.0e-14 |
||||
|
let yvar[1] = -1.00000000000001e-14 |
||||
|
let yvar[2] = -0.99999999999999e-14 |
||||
|
let yvar[3] = -1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title 'neg 14 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* negative 15 digits plus exponent |
||||
|
let yvar[0] = -1.0e-14 |
||||
|
let yvar[1] = -1.000000000000001e-14 |
||||
|
let yvar[2] = -0.999999999999999e-14 |
||||
|
let yvar[3] = -1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title 'neg 15 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* negative 16 digits plus exponent |
||||
|
let yvar[0] = -1.0e-14 |
||||
|
let yvar[1] = -1.0000000000000001e-14 |
||||
|
let yvar[2] = -0.9999999999999999e-14 |
||||
|
let yvar[3] = -1.0e-14 |
||||
|
|
||||
|
plot yvar vs xvar title 'neg 16 digits plus exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* 15 digits plus big exponent |
||||
|
let yvar[0] = 1.0e-200 |
||||
|
let yvar[1] = 1.000000000000001e-200 |
||||
|
let yvar[2] = 0.999999999999999e-200 |
||||
|
let yvar[3] = 1.0e-200 |
||||
|
|
||||
|
plot yvar vs xvar title '15 digits plus big exponent' |
||||
|
|
||||
|
* -------------------- |
||||
|
* negative 15 digits plus big exponent |
||||
|
let yvar[0] = -1.0e-200 |
||||
|
let yvar[1] = -1.000000000000001e-200 |
||||
|
let yvar[2] = -0.999999999999999e-200 |
||||
|
let yvar[3] = -1.0e-200 |
||||
|
|
||||
|
plot yvar vs xvar title 'neg 15 digits plus big exponent' |
||||
|
|
||||
|
.endc |
||||
|
|
||||
|
.end |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue