summaryrefslogtreecommitdiff
path: root/vendor/github.com/buger/jsonparser/bytes.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-11-25 15:42:37 +0000
committerLibravatar GitHub <noreply@github.com>2024-11-25 15:42:37 +0000
commit3fceb5fc1a83a6ba3ca3c314eef50f0b45cd6009 (patch)
treed9fd78a82ec2352aad47d50cd9176e150f600b07 /vendor/github.com/buger/jsonparser/bytes.go
parent[bugfix] notification types missing from link header (#3571) (diff)
downloadgotosocial-3fceb5fc1a83a6ba3ca3c314eef50f0b45cd6009.tar.xz
bumps uptrace/bun dependencies to v1.2.6 (#3569)
Diffstat (limited to 'vendor/github.com/buger/jsonparser/bytes.go')
-rw-r--r--vendor/github.com/buger/jsonparser/bytes.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/buger/jsonparser/bytes.go b/vendor/github.com/buger/jsonparser/bytes.go
new file mode 100644
index 000000000..0bb0ff395
--- /dev/null
+++ b/vendor/github.com/buger/jsonparser/bytes.go
@@ -0,0 +1,47 @@
+package jsonparser
+
+import (
+ bio "bytes"
+)
+
+// minInt64 '-9223372036854775808' is the smallest representable number in int64
+const minInt64 = `9223372036854775808`
+
+// About 2x faster then strconv.ParseInt because it only supports base 10, which is enough for JSON
+func parseInt(bytes []byte) (v int64, ok bool, overflow bool) {
+ if len(bytes) == 0 {
+ return 0, false, false
+ }
+
+ var neg bool = false
+ if bytes[0] == '-' {
+ neg = true
+ bytes = bytes[1:]
+ }
+
+ var b int64 = 0
+ for _, c := range bytes {
+ if c >= '0' && c <= '9' {
+ b = (10 * v) + int64(c-'0')
+ } else {
+ return 0, false, false
+ }
+ if overflow = (b < v); overflow {
+ break
+ }
+ v = b
+ }
+
+ if overflow {
+ if neg && bio.Equal(bytes, []byte(minInt64)) {
+ return b, true, false
+ }
+ return 0, false, true
+ }
+
+ if neg {
+ return -v, true, false
+ } else {
+ return v, true, false
+ }
+}