Browse Source

Replaced buffer allocated on the stack with buffer allocated

on the heap.  Reason:  Parsing an attribute with a large number
of bytes resulted in a stack overflow.


git-svn-id: https://svn.microneil.com/svn/CodeDweller/branches/adeniz_1@108 d34b734f-a00e-4b39-a726-e4eeb87269ab
adeniz_1
adeniz 8 years ago
parent
commit
cf43979e2d
1 changed files with 7 additions and 6 deletions
  1. 7
    6
      XMLReader.cpp

+ 7
- 6
XMLReader.cpp View File



// See XMLReader.hpp for details // See XMLReader.hpp for details


//debug
#include <iostream>
//end of debug
#include <vector>

#include "CodeDweller/XMLReader.hpp" #include "CodeDweller/XMLReader.hpp"


using namespace std; using namespace std;
) { // then translate the content! ) { // then translate the content!
// Create the Content buffer... // Create the Content buffer...


int BfrSize = Stopdex - Startdex; // How big a buffer do we need?
char Bfr[BfrSize]; // Make one that size.
int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need?
vector<char> heapBfr(BfrSize, 0); // Make one that size.
char *Bfr = &(heapBfr[0]);


copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and ignore our lines. copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and ignore our lines.




int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need? int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need?
// Add byte for null terminator. // Add byte for null terminator.
char Bfr[BfrSize]; // Make one that size.
vector<char> heapBfr(BfrSize, 0); // Make one that size.
char *Bfr = &(heapBfr[0]);


NewLines += copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and count our lines. NewLines += copyDataCountLines(Bfr, Data, Startdex, Stopdex); // Get our data and count our lines.



Loading…
Cancel
Save