From f48e186bfdc2c28c5ed7c4b902c195d4de21bb6e Mon Sep 17 00:00:00 2001 From: Jupeyy Date: Thu, 14 Sep 2017 19:35:31 +0200 Subject: [PATCH] use CLineReader instead of fgets, also delete program at destruct --- src/engine/client/opengl_sl.cpp | 18 +++++++++++++----- src/engine/client/opengl_sl.h | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/engine/client/opengl_sl.cpp b/src/engine/client/opengl_sl.cpp index 08466cd96..a473a2eb9 100644 --- a/src/engine/client/opengl_sl.cpp +++ b/src/engine/client/opengl_sl.cpp @@ -1,5 +1,5 @@ #include "opengl_sl.h" -#include +#include #include #include #include @@ -7,14 +7,18 @@ bool CGLSL::LoadShader(const char* pFile, int Type) { if (m_IsLoaded) return true; IOHANDLE f; - //support read text in system.h/cpp - f = (IOHANDLE)fopen(pFile, "rt"); + f = io_open(pFile, IOFLAG_READ); std::vector Lines; char buff[500]; if (f) { - //support fgets in system.h/cpp - while (fgets(buff, 500, (FILE*)f)) Lines.push_back(buff); + CLineReader LineReader; + LineReader.Init(f); + char* ReadLine = NULL; + while ((ReadLine = LineReader.Get())) { + Lines.push_back(ReadLine); + Lines.back().append("\r\n"); + } io_close(f); const char** ShaderCode = new const char*[Lines.size()]; @@ -72,4 +76,8 @@ GLuint CGLSL::GetShaderID() { CGLSL::CGLSL(){ m_IsLoaded = false; +} + +CGLSL::~CGLSL(){ + DeleteShader(); } \ No newline at end of file diff --git a/src/engine/client/opengl_sl.h b/src/engine/client/opengl_sl.h index 3bc5039e5..aec85c05a 100644 --- a/src/engine/client/opengl_sl.h +++ b/src/engine/client/opengl_sl.h @@ -11,6 +11,7 @@ public: GLuint GetShaderID(); CGLSL(); + virtual ~CGLSL(); private: GLuint m_ShaderID; int m_Type;