Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SegFault when using STDIO Library #49

Open
WuffyTopside opened this issue Apr 21, 2018 · 1 comment
Open

SegFault when using STDIO Library #49

WuffyTopside opened this issue Apr 21, 2018 · 1 comment

Comments

@WuffyTopside
Copy link

WuffyTopside commented Apr 21, 2018

I'm using the future branch of lci, and whenever I run a program to write a YARN to a file, I get a Segmentation Fault. The Program is below:

HAI 1.4

CAN HAS STDIO?

I HAS A var ITZ "HAI!!!1!"

I HAS A file ITZ I IZ STDIO'Z OPEN YR "/usr/lol/file.txt" AN YR "r" MKAY

I IZ STDIO'Z DIAF YR file MKAY
O RLY?
YA RLY
I IZ STDIO'Z SCRIBBEL YR file AN YR var MKAY
NO WAI
INVISIBLE "I can't open ur file!!!1!"
OIC

I IZ STDIO'Z CLOSE YR file MKAY

KTHXBYE

@leyarotheconquerer
Copy link
Contributor

It looks like the code might not be doing quite what you think it's doing, though, admittedly, it'd be nice if lci reported the errors more intuitively.

First, I HAS A file ITZ I IZ STDIO'Z OPEN YR "/usr/lol/file.txt" AN YR "r" MKAY roughly translates to fopen("/usr/lol/file.txt", "r"). Unix documentation ( http://man7.org/linux/man-pages/man3/fopen.3.html ) states that to write to a file, you'll need to open in "w" or "w+" mode rather than "r" mode.

Second, I think the error checking in this code is inverted. I IZ STDIO'Z DIAF YR file MKAY translates to ferror(file). This is wrapped in a translation to a TROOF, where WIN is an error and FAIL indicates no error.

All that to say, I think LCI is working correctly (although maybe those segfaults should be replaced by some legible error messages). Here's a potential fix for your code that seems to work for me:

HAI 1.4

CAN HAS STDIO?

I HAS A var ITZ "HAI!!!1!"

I HAS A file ITZ I IZ STDIO'Z OPEN YR "/usr/lol/file.txt" AN YR "w" MKAY

I IZ STDIO'Z DIAF YR file MKAY
O RLY?
YA RLY
INVISIBLE "I can't open ur file!!!1!"
NO WAI
I IZ STDIO'Z SCRIBBEL YR file AN YR var MKAY
OIC

I IZ STDIO'Z CLOSE YR file MKAY

KTHXBYE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants