Crash application during call JavaScript function from Flash Player
-
Hi all.
Crash application during call JavaScript function (with 2-3th times) from Flash Player
Run debugger: SIGSEGV (Segmentation fault)
last stack - Cannot access memory at address 0x0
else stack - Cannot access memory at address 0xbaadf00dIn Firefox, Chrome - all good works!
OS: Windows XP x32 Pro SP3.
Qt: 4.8.4
MinGW: 4.4
IDE: 7.2.1.
FlashPlayer: 11.5.502.110 (debug version)main.cpp
@
#include <QApplication>
#include <QLocale>
#include <QTextCodec>
#include <QWebSettings>#include "TestBrowser.h"
int main(int argc,char *argv[]){
QApplication a(argc,argv);
QWebSettings *ws=QWebSettings::globalSettings();
ws->setAttribute(QWebSettings::PluginsEnabled,true);
ws->setAttribute(QWebSettings::JavascriptEnabled,true);
ws->setAttribute(QWebSettings::JavaEnabled,true);
ws->setAttribute(QWebSettings::JavascriptCanOpenWindows,true);
ws->setAttribute(QWebSettings::JavascriptCanCloseWindows,true);
ws->setAttribute(QWebSettings::JavascriptCanAccessClipboard,true);
ws->setAttribute(QWebSettings::SpatialNavigationEnabled,true);
ws->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled,true);
ws->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled,true);
ws->setAttribute(QWebSettings::LocalStorageEnabled,true);
ws->setAttribute(QWebSettings::PrintElementBackgrounds,false);
ws->setAttribute(QWebSettings::DeveloperExtrasEnabled,true);
QLocale::setDefault(QLocale(QLocale::Russian,QLocale::RussianFederation));
QTextCodec *utfcodec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(utfcodec);
QTextCodec::setCodecForCStrings(utfcodec);TestBrowser *mw = new TestBrowser(); mw->setWindowIcon(QIcon("favicon.ico")); mw->resize(1060,800); mw->move(40,0); mw->show(); return a.exec();
}
@TestBrowser.h
@
#ifndef TESTBROWSER_H
#define TESTBROWSER_H#include <QApplication>
#include <QMainWindow>
#include <QObject>
#include <QLineEdit>
#include <QToolBar>
#include <QPushButton>
#include <QMessageBox>
#include <QPrintPreviewDialog>
#include <QPrinter>
#include <QWebView>
#include <QWebFrame>
#include <QUrl>class TestBrowser : public QMainWindow{
Q_OBJECT
public:
TestBrowser();
QString tp;
QWebView *view;
QLineEdit *locationEdit;
void doAlertPan(QString me);public slots:
void changeLocation();
void toTestPage();
void doPrint(QWebFrame * fr);};
#endif
@TestBrowser.cpp
@
#include "TestBrowser.h"TestBrowser::TestBrowser(){
tp="http://ifinterface.com/techtest/testprint.html";
view=new QWebView(this);
view->page()->setForwardUnsupportedContent(true);
view->page()->createStandardContextMenu();locationEdit=new QLineEdit(this); locationEdit->setSizePolicy(QSizePolicy::Expanding,locationEdit->sizePolicy().verticalPolicy()); QToolBar *toolBar=addToolBar("Navigation"); toolBar->addAction(view->pageAction(QWebPage::Back)); toolBar->addAction(view->pageAction(QWebPage::Forward)); toolBar->addAction(view->pageAction(QWebPage::Reload)); toolBar->addAction(view->pageAction(QWebPage::Stop)); QPushButton *b1=new QPushButton("to TestPage",this); toolBar->addWidget(b1); toolBar->addWidget(locationEdit); QPushButton *b2=new QPushButton("=>",this); toolBar->addWidget(b2); connect(view->page(),SIGNAL(printRequested(QWebFrame *)),this,SLOT(doPrint(QWebFrame *))); connect(b1,SIGNAL(clicked()),this,SLOT(toTestPage())); connect(b2,SIGNAL(clicked()),SLOT(changeLocation())); connect(locationEdit,SIGNAL(returnPressed()),SLOT(changeLocation())); locationEdit->setText(tp); view->load(QUrl(tp)); setCentralWidget(view);
}
void TestBrowser::doAlertPan(QString me){
QMessageBox msgBox;
msgBox.setWindowIcon(QIcon("favicon.ico"));
msgBox.setIcon(QMessageBox::Information);
msgBox.setWindowTitle(tr("WebPage :: Сообщение"));
msgBox.setText(me);
msgBox.exec();
}void TestBrowser::toTestPage(){
locationEdit->setText(tp);
view->load(QUrl(tp));
view->setFocus();
}void TestBrowser::doPrint(QWebFrame * fr){
QPrintPreviewDialog* dialog=new QPrintPreviewDialog(this);
dialog->resize(800, 750);
connect(dialog,SIGNAL(paintRequested(QPrinter*)),fr,SLOT(print(QPrinter*)));
dialog->exec();
dialog->deleteLater();
}void TestBrowser::changeLocation(){
QUrl url=QUrl(locationEdit->text());
view->load(url);
view->setFocus();
}
@Most asked to point a finger that is not so.
If you have any thoughts / ideas - I will be glad to know.