clover: Have compat::string allocate its own memory.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 21 Jun 2014 16:06:07 +0000 (18:06 +0200)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 2 Jul 2014 19:15:13 +0000 (15:15 -0400)
src/gallium/state_trackers/clover/api/kernel.cpp
src/gallium/state_trackers/clover/util/compat.hpp

index 96cf302..05cc392 100644 (file)
@@ -58,7 +58,9 @@ clCreateKernelsInProgram(cl_program d_prog, cl_uint count,
 
    if (rd_kerns)
       copy(map([&](const module::symbol &sym) {
-               return desc(new kernel(prog, compat::string(sym.name),
+               return desc(new kernel(prog,
+                                      std::string(sym.name.begin(),
+                                                  sym.name.end()),
                                       range(sym.args)));
             }, syms),
          rd_kerns);
index e68d9df..28601e8 100644 (file)
@@ -72,7 +72,7 @@ namespace clover {
          vector(const vector &v) : p(alloc(v.n, v.p, v.n)), n(v.n) {
          }
 
-         vector(iterator p, size_type n) : p(alloc(n, p, n)), n(n) {
+         vector(const_iterator p, size_type n) : p(alloc(n, p, n)), n(n) {
          }
 
          template<typename C>
@@ -263,13 +263,13 @@ namespace clover {
          size_t offset;
       };
 
-      class string : public vector_ref<const char> {
+      class string : public vector<char> {
       public:
-         string(const char *p) : vector_ref(p, std::strlen(p)) {
+         string(const char *p) : vector(p, std::strlen(p)) {
          }
 
          template<typename C>
-         string(const C &v) : vector_ref(v) {
+         string(const C &v) : vector(v) {
          }
 
          operator std::string() const {