Fix VariantWriter overflow on 64-bit int

Integers in Godot are signed 64-bit ints (int64_t), but var2str used
int behind the scenes and would thus overflow after 2^31.

Also properly documented the actual bounds of int and the behaviour
when overflowing them.
This commit is contained in:
Rémi Verschelde
2019-02-21 11:21:41 +01:00
parent 16934c7411
commit b39e1df704
3 changed files with 23 additions and 8 deletions
+7 -6
View File
@@ -811,7 +811,7 @@
<description>
Random range, any floating point value between [code]from[/code] and [code]to[/code].
[codeblock]
prints(rand_range(0, 1), rand_range(0, 1)) # prints 0.135591 0.405263
prints(rand_range(0, 1), rand_range(0, 1)) # prints e.g. 0.135591 0.405263
[/codeblock]
</description>
</method>
@@ -830,7 +830,7 @@
<description>
Returns a random floating point value on the interval [code][0, 1][/code].
[codeblock]
randf() # returns 0.375671
randf() # returns e.g. 0.375671
[/codeblock]
</description>
</method>
@@ -838,11 +838,12 @@
<return type="int">
</return>
<description>
Returns a random 32 bit integer. Use remainder to obtain a random value in the interval [code][0, N][/code] (where N is smaller than 2^32 -1).
Returns a random unsigned 32 bit integer. Use remainder to obtain a random value in the interval [code][0, N][/code] (where N is smaller than 2^32 -1).
[codeblock]
randi() % 20 # returns random number between 0 and 19
randi() % 100 # returns random number between 0 and 99
randi() % 100 + 1 # returns random number between 1 and 100
randi() # returns random integer between 0 and 2^32 - 1
randi() % 20 # returns random integer between 0 and 19
randi() % 100 # returns random integer between 0 and 99
randi() % 100 + 1 # returns random integer between 1 and 100
[/codeblock]
</description>
</method>