From 44b16b06983ac3661f485ccfb3ffe88ba586d557 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 4 Feb 2014 14:02:16 +0100 Subject: Avoid out-of-bound accesses in Qt Quick example code Task-number: QTBUG-36197 Change-Id: I5545c36a1ce9ea6c2451c92e0e79f65e5ab26c68 Reviewed-by: Mitch Curtis --- examples/quick/scenegraph/graph/linenode.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'examples/quick/scenegraph') diff --git a/examples/quick/scenegraph/graph/linenode.cpp b/examples/quick/scenegraph/graph/linenode.cpp index 0d1229cf1d..015aa4f0ee 100644 --- a/examples/quick/scenegraph/graph/linenode.cpp +++ b/examples/quick/scenegraph/graph/linenode.cpp @@ -58,17 +58,14 @@ class LineShader : public QSGSimpleMaterialShader QSG_DECLARE_SIMPLE_SHADER(LineShader, LineMaterial) public: - const char *vertexShader() const { - QResource r(":/scenegraph/graph/shaders/line.vsh"); - Q_ASSERT(r.isValid()); - return (const char *) r.data(); - } + LineShader() + : vsh(readResource(":/scenegraph/graph/shaders/line.vsh")), + fsh(readResource(":/scenegraph/graph/shaders/line.fsh")) + {} - const char *fragmentShader() const { - QResource r(":/scenegraph/graph/shaders/line.fsh"); - Q_ASSERT(r.isValid()); - return (const char *) r.data(); - } + const char *vertexShader() const { return vsh.constData(); } + + const char *fragmentShader() const { return fsh.constData(); } QList attributes() const { return QList() << "pos" << "t"; } @@ -84,7 +81,15 @@ public: id_color = program()->uniformLocation("color"); } + static QByteArray readResource(const char *path) { + QResource r(path); + Q_ASSERT(r.isValid()); + return QByteArray((const char *)r.data(), r.size()); + } + private: + QByteArray vsh; + QByteArray fsh; int id_color; int id_spread; int id_size; -- cgit v1.2.3