mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-25 08:43:58 +00:00
* fix #16265: cgen now does not line wrap string litterals which, in combination with other hacks, caused a really obscure looking bug * fix #13999; nimhcr_integration.nim now works for osx * try to make appveyor CI disappear * disable openbsd + add diagnostic for openbsd * enable for openbsd * PTEMP * re-disable openbsd
This commit is contained in:
@@ -1556,6 +1556,9 @@ proc registerModuleToMain(g: BModuleList; m: BModule) =
|
||||
# nasty nasty hack to get the command line functionality working with HCR
|
||||
# register the 2 variables on behalf of the os module which might not even
|
||||
# be loaded (in which case it will get collected but that is not a problem)
|
||||
# EDIT: indeed, this hack, in combination with another un-necessary one
|
||||
# (`makeCString` was doing line wrap of string litterals) was root cause for
|
||||
# bug #16265.
|
||||
let osModulePath = ($systemModulePath).replace("stdlib_system", "stdlib_os").rope
|
||||
g.mainDatInit.addf("\thcrAddModule($1);\n", [osModulePath])
|
||||
g.mainDatInit.add("\tint* cmd_count;\n")
|
||||
|
||||
@@ -34,13 +34,15 @@ proc toCChar*(c: char; result: var string) =
|
||||
result.add c
|
||||
|
||||
proc makeCString*(s: string): Rope =
|
||||
const MaxLineLength = 64
|
||||
result = nil
|
||||
var res = newStringOfCap(int(s.len.toFloat * 1.1) + 1)
|
||||
res.add("\"")
|
||||
for i in 0..<s.len:
|
||||
if (i + 1) mod MaxLineLength == 0:
|
||||
res.add("\"\L\"")
|
||||
# line wrapping of string litterals in cgen'd code was a bad idea, e.g. causes: bug #16265
|
||||
# It also makes reading c sources or grepping harder, for zero benefit.
|
||||
# const MaxLineLength = 64
|
||||
# if (i + 1) mod MaxLineLength == 0:
|
||||
# res.add("\"\L\"")
|
||||
toCChar(s[i], res)
|
||||
res.add('\"')
|
||||
result.add(rope(res))
|
||||
|
||||
Reference in New Issue
Block a user