Comment 8 for bug 267006

Revision history for this message
Polevoy Dmitry (openocr-polevoy) wrote : Re: [Bug 267006] Re: Initial support of multi-page files

In line
sprintf(temp, "%s[%d]",fname, i );
you write to random memory adress because 'temp' a non valid pointer for
this case.

Try
char* temp[1024] = {0};
instead
char* temp;

2009/3/13 Kuzemko Aleksandr <email address hidden>

> I dont undenstand! When I use such function:
> static char* read_file(const char *fname) {
> Blob blob;
> size_t data_size;
> char *dib;
> try {
> Image image;
> // image.density("10");
> // image.ping(fname);
> // cout << "Image number of page "<<
> image.fileSize()/(image.columns()*image.rows()) << "\n";
> // image.density("300");
> int i=0;
> char* temp="file_venugopal.pdf[1]";
> // sprintf(temp, "%s[%d]",fname, i );
> cout << "Now we form file name"<< temp<<".\n";
> image.read(temp);//"file_venugopal.pdf[1]");
> // image.magick( "BMP" );
> // image.depth(24);
> // image.monochrome(1);
> // Write to BLOB in BMP format
> image.write(&blob, "DIB");
> cout << "Write BLOB" << "\n";
> image.write("out.bmp");
> } catch(Exception &error_) {
> cerr << error_.what() << "\n";
> return NULL;
> }
> data_size = blob.length();
> dib = new char[data_size];
> memcpy(dib, blob.data(), data_size);
> return dib;
> }
> it recognize second page of file_venugopal.pdf.
> But when I use
> ...
> int i=0;
> char* temp;
> sprintf(temp, "%s[%d]",fname, i );
> cout << "Now we form file name"<< temp<<".\n";
> ...
> I get Segfault error.
>
> Where Is my mistake?
>
> --
> Initial support of multi-page files
> https://bugs.launchpad.net/bugs/267006
> You received this bug notification because you are a member of Cuneiform
> Linux, which is the registrant for Cuneiform for Linux.
>
> Status in Linux port of Cuneiform: Confirmed
>
> Bug description:
> Please try this patch
> Add support for pdf djvu tiff multi-page files
> Pages saved in separeted files with name like
> outfilename_page_NUMBER_OF_PAGE.format_extension.
>