From 7ca20a9d47af050ea46ac72f21e9c1e29c3ab12f Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Fri, 31 Oct 2014 21:15:36 -0400 Subject: [PATCH] Jupiter::File no longer line breaks ever 8192 characters. --- Jupiter/File.cpp | 39 ++++++++++++++++++++++++++++++++------- Release/Jupiter.lib | Bin 252918 -> 252918 bytes 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Jupiter/File.cpp b/Jupiter/File.cpp index b672130..d077b27 100644 --- a/Jupiter/File.cpp +++ b/Jupiter/File.cpp @@ -131,13 +131,38 @@ bool Jupiter::File::load(const Jupiter::ReadableString &file) bool Jupiter::File::load(FILE *file) { - bool success = false; - char buffer[defaultBufferSize]; - - while (!feof(file)) - success |= Jupiter::File::addData(Jupiter::ReferenceString(buffer, fread(buffer, sizeof(char), sizeof(buffer), file))); - - return success; + Jupiter::String buffer(defaultBufferSize); + int c; + + for (;;) + { + c = fgetc(file); + if (c == EOF) + return false; + if (containsSymbol(ENDL, static_cast(c))) + { + Jupiter::File::data_->lines.add(new Jupiter::StringS(buffer)); + buffer.truncate(buffer.size()); + break; + } + else + buffer.concat(static_cast(c)); + } + for (;;) + { + c = fgetc(file); + if (c == EOF) + return true; + if (containsSymbol(ENDL, static_cast(c))) + { + Jupiter::File::data_->lines.add(new Jupiter::StringS(buffer)); + buffer.truncate(buffer.size()); + } + else + buffer.concat(static_cast(c)); + } + + return false; } void Jupiter::File::unload() diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 810108f5c4908e8080297d204999ca0df2d6d454..f9f589fb586ac8c049f0e72f498431b9ed3f9a61 100644 GIT binary patch delta 19228 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 delta 19253 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