Increase kjs requirement for using the timeout check

Unfortunately with the new timeout code but older than 5.72 will crash on appAlert

So increase the requirement to > 5.71
remotes/origin/release/20.04
Albert Astals Cid 6 years ago
parent 3311bcb949
commit 795c7cb01f
  1. 10
      CMakeLists.txt
  2. 3
      config-okular.h.cmake
  3. 7
      core/script/executor_kjs.cpp
  4. 5
      core/script/kjs_app.cpp

@ -343,16 +343,6 @@ if (KF5JS_FOUND)
core/script/kjs_ocg.cpp core/script/kjs_ocg.cpp
) )
target_link_libraries(okularcore PRIVATE KF5::JS KF5::JSApi) target_link_libraries(okularcore PRIVATE KF5::JS KF5::JSApi)
set(CMAKE_REQUIRED_LIBRARIES KF5::JSApi)
check_cxx_source_compiles("
#include <kjs/kjsinterpreter.h>
int main()
{
KJSInterpreter *ip = 0;
ip->setTimeoutTime(0);
return 0;
}
" HAVE_KJS_TIMEOUT)
endif() endif()
set_target_properties(okularcore PROPERTIES VERSION 9.0.0 SOVERSION 9 OUTPUT_NAME Okular5Core EXPORT_NAME Core) set_target_properties(okularcore PROPERTIES VERSION 9.0.0 SOVERSION 9 OUTPUT_NAME Okular5Core EXPORT_NAME Core)

@ -6,6 +6,3 @@
/* Defines whether the malloc_trim method from malloc.h is available */ /* Defines whether the malloc_trim method from malloc.h is available */
#cmakedefine01 HAVE_MALLOC_TRIM #cmakedefine01 HAVE_MALLOC_TRIM
/* Defines if we have timeout support in the KJS library */
#cmakedefine HAVE_KJS_TIMEOUT 1

@ -10,6 +10,7 @@
#include "executor_kjs_p.h" #include "executor_kjs_p.h"
#include <kjs_version.h>
#include <kjs/kjsinterpreter.h> #include <kjs/kjsinterpreter.h>
#include <kjs/kjsobject.h> #include <kjs/kjsobject.h>
#include <kjs/kjsprototype.h> #include <kjs/kjsprototype.h>
@ -61,7 +62,7 @@ void ExecutorKJSPrivate::initTypes()
m_docObject = JSDocument::wrapDocument( m_doc ); m_docObject = JSDocument::wrapDocument( m_doc );
m_interpreter = new KJSInterpreter( m_docObject ); m_interpreter = new KJSInterpreter( m_docObject );
#ifdef HAVE_KJS_TIMEOUT #if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
m_interpreter->setTimeoutTime( 2000 ); // max 2 secs allowed m_interpreter->setTimeoutTime( 2000 ); // max 2 secs allowed
#endif #endif
KJSContext *ctx = m_interpreter->globalContext(); KJSContext *ctx = m_interpreter->globalContext();
@ -117,12 +118,12 @@ void ExecutorKJS::execute( const QString &script, Event *event )
d->m_docObject.setProperty( ctx, QStringLiteral("event"), event ? JSEvent::wrapEvent( ctx, event ) : KJSUndefined() ); d->m_docObject.setProperty( ctx, QStringLiteral("event"), event ? JSEvent::wrapEvent( ctx, event ) : KJSUndefined() );
#ifdef HAVE_KJS_TIMEOUT #if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
d->m_interpreter->startTimeoutCheck(); d->m_interpreter->startTimeoutCheck();
#endif #endif
KJSResult result = d->m_interpreter->evaluate( QStringLiteral("okular.js"), 1, KJSResult result = d->m_interpreter->evaluate( QStringLiteral("okular.js"), 1,
script, &d->m_docObject ); script, &d->m_docObject );
#ifdef HAVE_KJS_TIMEOUT #if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
d->m_interpreter->stopTimeoutCheck(); d->m_interpreter->stopTimeoutCheck();
#endif #endif

@ -10,6 +10,7 @@
#include "kjs_app_p.h" #include "kjs_app_p.h"
#include <kjs_version.h>
#include <kjs/kjsarguments.h> #include <kjs/kjsarguments.h>
#include <kjs/kjsinterpreter.h> #include <kjs/kjsinterpreter.h>
#include <kjs/kjsobject.h> #include <kjs/kjsobject.h>
@ -239,14 +240,14 @@ static KJSObject appAlert( KJSContext *context, void *,
} }
#ifdef HAVE_KJS_TIMEOUT #if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
// halt timeout until the user has responded // halt timeout until the user has responded
context->interpreter().stopTimeoutCheck(); context->interpreter().stopTimeoutCheck();
#endif #endif
int button = box.exec(); int button = box.exec();
#ifdef HAVE_KJS_TIMEOUT #if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
// restart max allowed time // restart max allowed time
context->interpreter().startTimeoutCheck(); context->interpreter().startTimeoutCheck();
#endif #endif

Loading…
Cancel
Save