Просмотр исходного кода

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 лет назад
Родитель
Сommit
cf43979e2d
1 измененных файлов: 7 добавлений и 6 удалений
  1. 7
    6
      XMLReader.cpp

+ 7
- 6
XMLReader.cpp Просмотреть файл

@@ -21,9 +21,8 @@

// See XMLReader.hpp for details

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

#include "CodeDweller/XMLReader.hpp"

using namespace std;
@@ -929,8 +928,9 @@ bool XMLReaderElement::interpret(XMLReaderData& Data) {
) { // then translate the content!
// 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.

@@ -1127,7 +1127,8 @@ bool XMLReaderAttribute::interpret(XMLReaderData& Data) {

int BfrSize = Stopdex - Startdex + 1; // How big a buffer do we need?
// 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.


Загрузка…
Отмена
Сохранить