Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.3
kross-interpreters
kross-interpreters-ruby19.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kross-interpreters-ruby19.patch of Package kross-interpreters
Index: kross-interpreters-4.8.4/ruby/rubyconfig.h =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyconfig.h 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyconfig.h 2012-07-02 09:11:10.564640585 +0200 @@ -21,12 +21,10 @@ #define KROSS_RUBY_CONFIG_H #include <ruby.h> -#include <env.h> -#include <rubysig.h> -#include <node.h> -#include <version.h> +#include <ruby/backward/rubysig.h> +#include <ruby/version.h> -#include <st.h> +#include <ruby/st.h> //#include <typeinfo> #include <kross/core/krossconfig.h> Index: kross-interpreters-4.8.4/ruby/rubyextension.cpp =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyextension.cpp 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyextension.cpp 2012-07-02 09:11:10.564640585 +0200 @@ -218,7 +218,7 @@ VALUE RubyExtension::property(int argc, } RubyExtension* extension = toExtension(self); Q_ASSERT(extension); - return RubyType<QVariant>::toVALUE( extension->d->m_object->property(STR2CSTR(name)) ); + return RubyType<QVariant>::toVALUE( extension->d->m_object->property(StringValuePtr(name)) ); } VALUE RubyExtension::setProperty(int argc, VALUE *argv, VALUE self) @@ -231,7 +231,7 @@ VALUE RubyExtension::setProperty(int arg } RubyExtension* extension = toExtension(self); Q_ASSERT(extension && extension->d->m_object); - return RubyType<bool>::toVALUE( extension->d->m_object->setProperty(STR2CSTR(name), RubyType<QVariant>::toVariant(value)) ); + return RubyType<bool>::toVALUE( extension->d->m_object->setProperty(StringValuePtr(name), RubyType<QVariant>::toVariant(value)) ); } VALUE RubyExtension::callConnect(int argc, VALUE *argv, VALUE self) @@ -291,7 +291,7 @@ VALUE RubyExtension::callConnect(int arg QObject* receiver = 0; // the receiver object QByteArray receiverslot; // the receiver slot if( TYPE(argv[idx]) == T_DATA ) { -#if(RUBY_VERSION_MAJOR==1 && RUBY_VERSION_MINOR==8 && RUBY_VERSION_TEENY==4) +#if(RUBY_API_VERSION_MAJOR==1 && RUBY_API_VERSION_MINOR==8 && RUBY_API_VERSION_TEENY==4) //Ruby sucks sometimes; http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/201285 { // just always assume the user provides a method here for now... #else @@ -308,7 +308,7 @@ VALUE RubyExtension::callConnect(int arg receiver = receiverextension->object(); } */ -#if(!(RUBY_VERSION_MAJOR==1 && RUBY_VERSION_MINOR==8 && RUBY_VERSION_TEENY==4)) +#if(!(RUBY_API_VERSION_MAJOR==1 && RUBY_API_VERSION_MINOR==8 && RUBY_API_VERSION_TEENY==4)) else { rb_raise(rb_eTypeError, ::QString("The argument number %1 is invalid.").arg(idx).toLatin1().constData()); return Qfalse; Index: kross-interpreters-4.8.4/ruby/rubyvariant.h =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyvariant.h 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyvariant.h 2012-07-02 09:11:10.567640444 +0200 @@ -124,7 +124,7 @@ namespace Kross { case T_BIGNUM: return rb_big2int(value); case T_FLOAT: - return (int)(RFLOAT(value)->value); + return (int)(RFLOAT_VALUE(value)); default: break; } @@ -147,7 +147,7 @@ namespace Kross { case T_BIGNUM: return rb_big2uint(value); case T_FLOAT: - return (uint)(RFLOAT(value)->value); + return (uint)(RFLOAT_VALUE(value)); default: break; } @@ -226,10 +226,10 @@ namespace Kross { //return STR2CSTR( rb_inspect(value) ); return QByteArray(""); } - long length = LONG2NUM( RSTRING(value)->len ); + long length = LONG2NUM( RSTRING_LEN(value) ); if( length < 0 ) return QByteArray(""); - char* ca = rb_str2cstr(value, &length); + char* ca = RSTRING_PTR(StringValue(value)); return QByteArray(ca, length); } }; @@ -246,7 +246,7 @@ namespace Kross { rb_raise(rb_eTypeError, "QString must be a string"); return QString(); } - return STR2CSTR(value); + return StringValuePtr(value); } }; @@ -261,7 +261,7 @@ namespace Kross { return l; } inline static QSize toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) { rb_raise(rb_eTypeError, "QSize must be an array with 2 elements"); return QSize(); } @@ -280,7 +280,7 @@ namespace Kross { return l; } inline static QSizeF toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) { rb_raise(rb_eTypeError, "QSizeF must be an array with 2 elements"); return QSizeF(); } @@ -300,7 +300,7 @@ namespace Kross { return l; } inline static QPoint toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) { rb_raise(rb_eTypeError, "QPoint must be an array with 2 elements"); return QPoint(); } @@ -319,7 +319,7 @@ namespace Kross { return l; } inline static QPointF toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 2 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 2 ) { rb_raise(rb_eTypeError, "QPointF must be an array with 2 elements"); return QPointF(); } @@ -340,7 +340,7 @@ namespace Kross { return l; } inline static QRect toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 4 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 4 ) { rb_raise(rb_eTypeError, "QRect must be an array with 4 elements"); return QRect(); } @@ -362,7 +362,7 @@ namespace Kross { return l; } inline static QRectF toVariant(VALUE value) { - if( TYPE(value) != T_ARRAY || RARRAY(value)->len != 4 ) { + if( TYPE(value) != T_ARRAY || RARRAY_LEN(value) != 4 ) { rb_raise(rb_eTypeError, "QRectF must be an array with 4 elements"); return QRectF(); } @@ -447,7 +447,7 @@ namespace Kross { return QStringList(); } QStringList l; - for(int i = 0; i < RARRAY(value)->len; i++) + for(int i = 0; i < RARRAY_LEN(value); i++) l.append( RubyType<QString>::toVariant( rb_ary_entry(value, i) ) ); return l; } @@ -469,7 +469,7 @@ namespace Kross { return QVariantList(); } QVariantList l; - for(int i = 0; i < RARRAY(value)->len; i++) + for(int i = 0; i < RARRAY_LEN(value); i++) l.append( RubyType<QVariant>::toVariant( rb_ary_entry(value, i) ) ); return l; } @@ -490,7 +490,7 @@ namespace Kross { QVariantMap* map; Data_Get_Struct(vmap, QVariantMap, map); if (key != Qundef) - map->insert(STR2CSTR(key), RubyType<QVariant>::toVariant(value)); + map->insert(StringValuePtr(key), RubyType<QVariant>::toVariant(value)); return ST_CONTINUE; } inline static QVariantMap toVariant(VALUE value) { Index: kross-interpreters-4.8.4/ruby/rubyvariant.cpp =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyvariant.cpp 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyvariant.cpp 2012-07-02 09:11:10.567640444 +0200 @@ -487,7 +487,7 @@ MetaType* RubyMetaTypeFactory::create(co #endif QList<void*> list; if( TYPE(value) == T_ARRAY ) { - for(int i = 0; i < RARRAY(value)->len; i++) + for(int i = 0; i < RARRAY_LEN(value); i++) if( void *ptr = VoidList::extractVoidStar(rb_ary_entry(value, i)) ) list << ptr; } Index: kross-interpreters-4.8.4/ruby/rubyfunction.h =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyfunction.h 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyfunction.h 2012-07-02 09:11:10.568640397 +0200 @@ -56,7 +56,7 @@ namespace Kross { m_debuginfo = QString("sender=%1 signature=%2 method=%3") .arg( sender ? QString("%1 (%2)").arg(sender->objectName()).arg(sender->metaObject()->className()) : "NULL" ) .arg( signal.data() ) - .arg( STR2CSTR(rb_inspect(method)) ); + .arg( StringValuePtr(rb_inspect(method)) ); krossdebug( QString("RubyFunction Ctor %1").arg(m_debuginfo) ); #endif rb_gc_register_address(&m_method); @@ -80,19 +80,22 @@ namespace Kross { static VALUE callFunctionException(VALUE args, VALUE error) { //#ifdef KROSS_RUBY_FUNCTION_DEBUG + VALUE v_args = rb_inspect(args); + VALUE v_error = rb_inspect(error); krossdebug( QString("RubyFunction callFunctionException args=%1 error=%2") - .arg( STR2CSTR(rb_inspect(args)) ).arg( STR2CSTR(rb_inspect(error)) ) ); + .arg( StringValuePtr(v_args) ).arg( StringValuePtr(v_error) ) ); //#else // Q_UNUSED(args); // Q_UNUSED(error); //#endif VALUE info = rb_gv_get("$!"); VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0); - VALUE message = RARRAY(bt)->ptr[0]; - fprintf(stderr,"%s: %s (%s)\n", STR2CSTR(message), STR2CSTR(rb_obj_as_string(info)), rb_class2name(CLASS_OF(info))); - for(int i = 1; i < RARRAY(bt)->len; ++i) - if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING ) - fprintf(stderr,"\tfrom %s\n", STR2CSTR(RARRAY(bt)->ptr[i])); + VALUE message = RARRAY_PTR(bt)[0]; + VALUE v_info = rb_obj_as_string(info); + fprintf(stderr,"%s: %s (%s)\n", StringValuePtr(message), StringValuePtr(v_info), rb_class2name(CLASS_OF(info))); + for(int i = 1; i < RARRAY_LEN(bt); ++i) + if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING ) + fprintf(stderr,"\tfrom %s\n", StringValuePtr(RARRAY_PTR(bt)[i])); //ruby_nerrs++; return Qnil; } @@ -105,7 +108,7 @@ namespace Kross { static VALUE callFunction(VALUE args) { #ifdef KROSS_RUBY_FUNCTION_DEBUG - krossdebug( QString("RubyFunction callFunction args=%1").arg(STR2CSTR(rb_inspect(args))) ); + krossdebug( QString("RubyFunction callFunction args=%1").arg(StringValuePtr(rb_inspect(args))) ); #endif Q_ASSERT( TYPE(args) == T_ARRAY ); VALUE self = rb_ary_entry(args, 0); @@ -116,9 +119,9 @@ namespace Kross { { argumentsP[idx] = rb_ary_entry(arguments, idx+1); } - //krossdebug(QString("RubyScript::callExecute script=%1").arg(STR2CSTR( rb_inspect(script) ))); - //krossdebug(QString("RubyScript::callExecute fileName=%1").arg(STR2CSTR( rb_inspect(fileName) ))); - //krossdebug(QString("RubyScript::callExecute src=%1").arg(STR2CSTR( rb_inspect(src) ))); + //krossdebug(QString("RubyScript::callExecute script=%1").arg(StringValuePtr( rb_inspect(script) ))); + //krossdebug(QString("RubyScript::callExecute fileName=%1").arg(StringValuePtr( rb_inspect(fileName) ))); + //krossdebug(QString("RubyScript::callExecute src=%1").arg(StringValuePtr( rb_inspect(src) ))); VALUE result = rb_funcall2(self, rb_intern("call"), argsize, argumentsP); delete[] argumentsP; return result; @@ -198,19 +201,19 @@ namespace Kross { //VALUE result = rb_funcall2(m_method, rb_intern("call"), argsize, args); //TODO optimize - ruby_in_eval++; + //ruby_in_eval++ VALUE argarray = rb_ary_new2(3); rb_ary_store(argarray, 0, m_method); //self rb_ary_store(argarray, 1, INT2FIX(argsize)); rb_ary_store(argarray, 2, args); VALUE result = rb_rescue2((VALUE(*)(...))callFunction, argarray, (VALUE(*)(...))callFunctionException, Qnil, rb_eException, 0); - ruby_in_eval--; + //ruby_in_eval--; // finally set the returnvalue m_tmpResult = RubyType<QVariant>::toVariant(result); #ifdef KROSS_RUBY_FUNCTION_DEBUG QObject* sender = QObject::sender(); - krossdebug( QString("RubyFunction::qt_metacall sender.objectName=%1 sender.className=%2 result=%3 variantresult=%4").arg(sender->objectName()).arg(sender->metaObject()->className()).arg(STR2CSTR(rb_inspect(result))).arg(m_tmpResult.toString()) ); + krossdebug( QString("RubyFunction::qt_metacall sender.objectName=%1 sender.className=%2 result=%3 variantresult=%4").arg(sender->objectName()).arg(sender->metaObject()->className()).arg(StringValuePtr(rb_inspect(result))).arg(m_tmpResult.toString()) ); #endif //_a[0] = Kross::MetaTypeVariant<QVariant>(d->tmpResult).toVoidStar(); _a[0] = &(m_tmpResult); Index: kross-interpreters-4.8.4/ruby/rubyscript.cpp =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyscript.cpp 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyscript.cpp 2012-07-02 09:16:15.872314642 +0200 @@ -32,41 +32,40 @@ #include <QMetaObject> #include <QMetaMethod> -extern NODE *ruby_eval_tree; - using namespace Kross; static VALUE callExecuteException(VALUE self, VALUE error) { //#ifdef KROSS_RUBY_SCRIPT_DEBUG + VALUE v_self = rb_inspect(self); + VALUE v_error = rb_inspect(error); krossdebug( QString("RubyScript::callExecuteException script=%1 error=%2") - .arg( STR2CSTR(rb_inspect(self)) ).arg( STR2CSTR(rb_inspect(error)) ) ); + .arg( StringValuePtr(v_self) ).arg( StringValuePtr(v_error) ) ); //#else //Q_UNUSED(error); //#endif VALUE info = rb_gv_get("$!"); VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0); - VALUE message = RARRAY(bt)->ptr[0]; + VALUE message = RARRAY_PTR(bt)[0]; + VALUE v_info = rb_obj_as_string(info); QString errormessage = QString("%1: %2 (%3)") - .arg( STR2CSTR(message) ) - .arg( STR2CSTR(rb_obj_as_string(info)) ) + .arg( StringValuePtr(message) ) + .arg( StringValuePtr(v_info) ) .arg( rb_class2name(CLASS_OF(info)) ); fprintf(stderr, "%s\n", errormessage.toLatin1().data()); QString tracemessage; - for(int i = 1; i < RARRAY(bt)->len; ++i) { - if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING ) { - QString s = QString("%1\n").arg( STR2CSTR(RARRAY(bt)->ptr[i]) ); + for(int i = 1; i < RARRAY_LEN(bt); ++i) { + if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING ) { + QString s = QString("%1\n").arg( StringValuePtr(RARRAY_PTR(bt)[i]) ); Q_ASSERT( ! s.isNull() ); tracemessage += s; fprintf(stderr, "\t%s", s.toLatin1().data()); } } - ruby_nerrs++; - VALUE rubyscriptvalue = rb_funcall(self, rb_intern("const_get"), 1, ID2SYM(rb_intern("RUBYSCRIPTOBJ"))); RubyScript* rubyscript; Data_Get_Struct(rubyscriptvalue, RubyScript, rubyscript); @@ -79,7 +78,7 @@ static VALUE callExecuteException(VALUE static VALUE callExecute(VALUE args) { #ifdef KROSS_RUBY_SCRIPT_DEBUG - krossdebug( QString("RubyScript::callExecute args=%1").arg( STR2CSTR(rb_inspect(args)) ) ); + krossdebug( QString("RubyScript::callExecute args=%1").arg( StringValuePtr(rb_inspect(args)) ) ); #endif Q_ASSERT( TYPE(args) == T_ARRAY ); VALUE self = rb_ary_entry(args, 0); @@ -88,9 +87,9 @@ static VALUE callExecute(VALUE args) Q_ASSERT( ! NIL_P(src) ); VALUE fileName = rb_ary_entry(args, 2); Q_ASSERT( ! NIL_P(fileName) && TYPE(fileName) == T_STRING ); - //krossdebug(QString("RubyScript::callExecute script=%1").arg(STR2CSTR( rb_inspect(script) ))); - //krossdebug(QString("RubyScript::callExecute fileName=%1").arg(STR2CSTR( rb_inspect(fileName) ))); - //krossdebug(QString("RubyScript::callExecute src=%1").arg(STR2CSTR( rb_inspect(src) ))); + //krossdebug(QString("RubyScript::callExecute script=%1").arg(StringValuePtr( rb_inspect(script) ))); + //krossdebug(QString("RubyScript::callExecute fileName=%1").arg(StringValuePtr( rb_inspect(fileName) ))); + //krossdebug(QString("RubyScript::callExecute src=%1").arg(StringValuePtr( rb_inspect(src) ))); return rb_funcall(self, rb_intern("module_eval"), 2, src, fileName); } @@ -124,11 +123,11 @@ namespace Kross { const char *methodname = rb_id2name(SYM2ID(unit)); #ifdef KROSS_RUBY_SCRIPT_METHODADDED_DEBUG - krossdebug(QString("RubyScriptPrivate::method_added methodname=%1 self=%2 module=%3").arg(methodname).arg(STR2CSTR( rb_inspect(self) )).arg(STR2CSTR( rb_inspect(module) ))); + krossdebug(QString("RubyScriptPrivate::method_added methodname=%1 self=%2 module=%3").arg(methodname).arg(StringValuePtr( rb_inspect(self) )).arg(StringValuePtr( rb_inspect(module) ))); #endif VALUE rubyscriptvalue = rb_funcall(self, rb_intern("const_get"), 1, ID2SYM(rb_intern("RUBYSCRIPTOBJ"))); - //krossdebug(QString("RubyScriptPrivate::method_added rubyscriptvalue=%1").arg(STR2CSTR( rb_inspect(rubyscriptvalue) ))); + //krossdebug(QString("RubyScriptPrivate::method_added rubyscriptvalue=%1").arg(StringValuePtr( rb_inspect(rubyscriptvalue) ))); RubyScript* rubyscript; Data_Get_Struct(rubyscriptvalue, RubyScript, rubyscript); @@ -142,7 +141,7 @@ namespace Kross { VALUE method = rb_funcall(self, rb_intern("method"), 1, rb_str_new2(methodname)); #ifdef KROSS_RUBY_SCRIPT_METHODADDED_DEBUG - krossdebug(QString("RubyScriptPrivate::method_added method=%1").arg(STR2CSTR( rb_inspect(method) ))); + krossdebug(QString("RubyScriptPrivate::method_added method=%1").arg(StringValuePtr( rb_inspect(method) ))); #endif RubyFunction* function = rubyscript->connectFunction(f.first, f.second.toLatin1(), method); @@ -173,11 +172,8 @@ namespace Kross { // needed to prevent infinitive loops ifour scripting call uses e.g. callFunction m_hasBeenSuccessFullyExecuted = true; - const int critical = rb_thread_critical; - rb_thread_critical = Qtrue; - - ruby_nerrs = 0; - ruby_errinfo = Qnil; + VALUE mutex; + rb_mutex_lock(mutex); VALUE args = rb_ary_new2(3); rb_ary_store(args, 0, m_script); //self @@ -192,11 +188,9 @@ namespace Kross { } */ - ruby_in_eval++; VALUE result = rb_rescue2((VALUE(*)(...))callExecute, args, (VALUE(*)(...))callExecuteException, m_script, rb_eException, 0); - ruby_in_eval--; - if (ruby_nerrs != 0) { + if (rb_obj_is_kind_of(result, rb_eException)) { //#ifdef KROSS_RUBY_SCRIPT_EXECUTE_DEBUG krossdebug( QString("Compilation has failed. errorMessage=%1 errorTrace=\n%2\n").arg(q->errorMessage()).arg(q->errorTrace()) ); //#endif @@ -205,11 +199,12 @@ namespace Kross { m_hasBeenSuccessFullyExecuted = true; } + #ifdef KROSS_RUBY_EXPLICIT_GC rb_gc(); #endif - rb_thread_critical = critical; + rb_mutex_unlock(mutex); return result; } @@ -353,7 +348,7 @@ QStringList RubyScript::functionNames() static VALUE callFunction2(VALUE args) { #ifdef KROSS_RUBY_SCRIPT_DEBUG - krossdebug( QString("RubyScript::callFunction2 args=%1").arg( STR2CSTR(rb_inspect(args)) ) ); + krossdebug( QString("RubyScript::callFunction2 args=%1").arg( StringValuePtr(rb_inspect(args)) ) ); #endif Q_ASSERT( TYPE(args) == T_ARRAY ); VALUE self = rb_ary_entry(args, 0); @@ -361,7 +356,7 @@ static VALUE callFunction2(VALUE args) ID functionId = rb_ary_entry(args, 1); VALUE arguments = rb_ary_entry(args, 2); Q_ASSERT( TYPE(arguments) == T_ARRAY ); - return rb_funcall2(self, functionId, RARRAY(arguments)->len, RARRAY(arguments)->ptr); + return rb_funcall2(self, functionId, RARRAY_LEN(arguments), RARRAY_PTR(arguments)); } QVariant RubyScript::callFunction(const QString& name, const QVariantList& args) @@ -371,10 +366,10 @@ QVariant RubyScript::callFunction(const krossdebug( QString("RubyScript::callFunction() name=%1").arg(name) ); #endif - const int critical = rb_thread_critical; - rb_thread_critical = Qtrue; - ruby_in_eval++; //ruby_current_node + VALUE mutex; + rb_mutex_lock(mutex); + if( ! d->m_hasBeenSuccessFullyExecuted ) { execute(); @@ -383,11 +378,12 @@ QVariant RubyScript::callFunction(const #ifdef KROSS_RUBY_SCRIPT_CALLFUNCTION_DEBUG krossdebug("RubyScript::callFunction failed"); #endif - setError( QString("Failed to call function \"%1\": %2").arg(name).arg(STR2CSTR( rb_obj_as_string(ruby_errinfo) )) ); // TODO: get the error + VALUE v_errinfo = rb_obj_as_string(rb_errinfo()); + setError( QString("Failed to call function \"%1\": %2").arg(name).arg(StringValuePtr( v_errinfo )) ); // TODO: get the error } else { //VALUE self = rb_eval_string("self"); - //krossdebug(QString("RubyScript::callFunction() ===> %1").arg(STR2CSTR(rb_inspect(self)))); + //krossdebug(QString("RubyScript::callFunction() ===> %1").arg(StringValuePtr(rb_inspect(self)))); const int rnargs = args.size(); VALUE *rargs = new VALUE[rnargs]; @@ -413,8 +409,7 @@ QVariant RubyScript::callFunction(const // rb_gc(); // This one is plainly wrong, since there is a good deal of chance that it will delete the content of result before it is used #endif - ruby_in_eval--; - rb_thread_critical = critical; + rb_mutex_unlock(mutex); return result; } @@ -433,12 +428,13 @@ RubyFunction* RubyScript::connectFunctio QByteArray sendersignal = QString("2%1").arg(signature.data()).toLatin1(); //prepanding 2 means SIGNAL() QByteArray receiverslot = QString("1%1").arg(signature.data()).toLatin1(); //prepanding 1 means SLOT() if( ! QObject::connect(sender, sendersignal, function, receiverslot) ) { - krosswarning( QString("RubyScript::method_added failed to connect object='%1' signal='%2' method='%3'").arg(sender->objectName()).arg(signature.data()).arg(STR2CSTR(rb_inspect(method))) ); + VALUE v_method = rb_inspect(method); + krosswarning( QString("RubyScript::method_added failed to connect object='%1' signal='%2' method='%3'").arg(sender->objectName()).arg(signature.data()).arg(StringValuePtr(v_method)) ); delete function; return 0; } #ifdef KROSS_RUBY_SCRIPT_CONNECTFUNCTION_DEBUG - krossdebug( QString("RubyScript::method_added connected object='%1' signal='%2' method='%3'").arg(sender->objectName()).arg(signature.data()).arg(STR2CSTR(rb_inspect(method))) ); + krossdebug( QString("RubyScript::method_added connected object='%1' signal='%2' method='%3'").arg(sender->objectName()).arg(signature.data()).arg(StringValuePtr(rb_inspect(method))) ); #endif d->m_rubyfunctions.append( function ); return function; Index: kross-interpreters-4.8.4/ruby/rubyobject.cpp =================================================================== --- kross-interpreters-4.8.4.orig/ruby/rubyobject.cpp 2011-07-27 20:42:32.312514751 +0200 +++ kross-interpreters-4.8.4/ruby/rubyobject.cpp 2012-07-02 09:11:10.587639506 +0200 @@ -34,25 +34,26 @@ static VALUE callExecuteException(VALUE VALUE info = rb_gv_get("$!"); VALUE bt = rb_funcall(info, rb_intern("backtrace"), 0); - VALUE message = RARRAY(bt)->ptr[0]; + VALUE message = RARRAY_PTR(bt)[0]; + VALUE v_info = rb_obj_as_string(info); QString errormessage = QString("%1: %2 (%3)") - .arg( STR2CSTR(message) ) - .arg( STR2CSTR(rb_obj_as_string(info)) ) + .arg( StringValuePtr(message) ) + .arg( StringValuePtr(v_info) ) .arg( rb_class2name(CLASS_OF(info)) ); fprintf(stderr, "%s\n", errormessage.toLatin1().data()); QString tracemessage; - for(int i = 1; i < RARRAY(bt)->len; ++i) { - if( TYPE(RARRAY(bt)->ptr[i]) == T_STRING ) { - QString s = QString("%1\n").arg( STR2CSTR(RARRAY(bt)->ptr[i]) ); + for(int i = 1; i < RARRAY_LEN(bt); ++i) { + if( TYPE(RARRAY_PTR(bt)[i]) == T_STRING ) { + VALUE v = RARRAY_PTR(bt)[i]; + QString s = QString("%1\n").arg( StringValuePtr(v) ); Q_ASSERT( ! s.isNull() ); tracemessage += s; fprintf(stderr, "\t%s", s.toLatin1().data()); } } - ruby_nerrs++; /* VALUE rubyscriptvalue = rb_funcall(self, rb_intern("const_get"), 1, ID2SYM(rb_intern("RUBYSCRIPTOBJ"))); RubyScript* rubyscript; @@ -66,7 +67,8 @@ static VALUE callExecuteException(VALUE static VALUE callFunction2(VALUE args) { #ifdef KROSS_RUBY_OBJECT_DEBUG - krossdebug( QString("RubyObject::callFunction2 args=%1").arg( STR2CSTR(rb_inspect(args)) ) ); + VALUE v_args = rb_inspect(args); + krossdebug( QString("RubyObject::callFunction2 args=%1").arg( StringValuePtr(v_args) ) ); #endif Q_ASSERT( TYPE(args) == T_ARRAY ); VALUE self = rb_ary_entry(args, 0); @@ -74,7 +76,7 @@ static VALUE callFunction2(VALUE args) ID functionId = rb_ary_entry(args, 1); VALUE arguments = rb_ary_entry(args, 2); Q_ASSERT( TYPE(arguments) == T_ARRAY ); - return rb_funcall2(self, functionId, RARRAY(arguments)->len, RARRAY(arguments)->ptr); + return rb_funcall2(self, functionId, RARRAY_LEN(arguments), RARRAY_PTR(arguments)); } class RubyObject::Private @@ -104,7 +106,8 @@ RubyObject::RubyObject(const VALUE& obje , d(new Private(object)) { #ifdef KROSS_RUBY_OBJECT_DEBUG - d->debug = QString("type=%1 value=%2").arg(TYPE(object)).arg(STR2CSTR(rb_inspect(object))); + VALUE v_object = rb_inspect(object); + d->debug = QString("type=%1 value=%2").arg(TYPE(object)).arg(StringValuePtr(v_object)); krossdebug( QString("RubyObject::RubyObject(const VALUE& object) constructor: %1").arg(d->debug) ); #endif @@ -112,8 +115,8 @@ RubyObject::RubyObject(const VALUE& obje VALUE methods; const char* method; methods = rb_class_instance_methods(1, args, CLASS_OF(object)); - for (int i = 0; i < RARRAY(methods)->len; i++) { - method = StringValuePtr(RARRAY(methods)->ptr[i]); + for (int i = 0; i < RARRAY_LEN(methods); i++) { + method = StringValuePtr(RARRAY_PTR(methods)[i]); krossdebug( QString("RubyObject::RubyObject() method=%1").arg( method )); d->calls << method; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor