This commit is contained in:
Andreas Rumpf 2019-09-19 14:34:56 +02:00 • committed by GitHub
commit 162d74db91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 103 additions and 1 deletions

View file

@ -6,6 +6,10 @@ discard """
nimout: '''caught Exception
main:begin
main:end
@[{0}]
(width: 0, height: 0, path: "")
@[(width: 0, height: 0, path: ""), (width: 0, height: 0, path: "")]
Done!
'''
"""
@ -81,3 +85,98 @@ proc simpleTryFinally()=
echo "main:end"
static: simpleTryFinally()
# bug #10981
import sets
proc main =
for i in 0..<15:
var someSets = @[initHashSet[int]()]
someSets[^1].incl(0) # <-- segfaults
if i == 0:
echo someSets
static:
main()
# bug #7261
const file = """
sprites.png
size: 1024,1024
format: RGBA8888
filter: Linear,Linear
repeat: none
char/slide_down
rotate: false
xy: 730, 810
size: 204, 116
orig: 204, 116
offset: 0, 0
index: -1
"""
type
AtlasPage = object
width, height: int
path: string
CtsStream = object
data: string
pos: int
proc atEnd(stream: CtsStream): bool =
stream.pos >= stream.data.len
proc readChar(stream: var CtsStream): char =
if stream.atEnd:
result = '\0'
else:
result = stream.data[stream.pos]
inc stream.pos
proc readLine(s: var CtsStream, line: var string): bool =
# This is pretty much copied from the standard library:
line.setLen(0)
while true:
var c = readChar(s)
if c == '\c':
c = readChar(s)
break
elif c == '\L': break
elif c == '\0':
if line.len > 0: break
else: return false
line.add(c)
result = true
proc peekLine(s: var CtsStream, line: var string): bool =
let oldPos = s.pos
result = s.readLine(line)
s.pos = oldPos
proc initCtsStream(data: string): CtsStream =
CtsStream(
pos: 0,
data: data
)
# ********************
# Interesting stuff happens here:
# ********************
proc parseAtlas(stream: var CtsStream) =
var pages = @[AtlasPage(), AtlasPage()]
var line = ""
block:
let page = addr pages[^1]
discard stream.peekLine(line)
discard stream.peekLine(line)
echo page[]
echo pages
static:
var stream = initCtsStream(file)
parseAtlas(stream)
echo "Done!"