[RQt-devel] regressions

Michael Lawrence lawrence.michael at gene.com
Wed Mar 3 16:32:15 CET 2010


Thanks, this should be fixed. Smoke uses negative indices for ambiguous
(overloaded) methods, which were happening in constructors. Just had to
check for that.

On Tue, Mar 2, 2010 at 9:08 PM, Deepayan Sarkar
<deepayan.sarkar at gmail.com>wrote:

> On Mon, Mar 1, 2010 at 2:54 PM, Michael Lawrence
> <lawrence.michael at gene.com> wrote:
>
> >> > Qt$QRectF(0, 0, 100, 100) ## or qrect(0, 0, 100, 100)
> >> Error in assign(enum, structure(enums[enum], class = "QtEnum"), env) :
> >>  attempt to use zero-length variable name
> >>
> >
> > That sucks, because I don't. Maybe a 4.5 vs 4.6 issue? Could you look
> into
> > the qenums code and try to catch where it is reporting an empty string
> for
> > an enum name? If you need help finding your way through the code, just
> let
> > me know.
> > Thanks for doing all the grunt work testing here. Sorry I have not been
> > taking the time to test things. Hopefully the demo directory will come to
> > represent a nice set of tests. Also, Qt itself has tests which we could
> > translate to R.
>
> I no longer get the error reproducibly, but I do get (two types of)
> errors intermittently. I've tracked down the problem to
>
> QHash<const char *, int> SmokeClass::createEnumValuesMap() const {
>
> and specifically the loop
>
>  for (int i = methmin; i <= methmax; i++) {
>    Smoke::Method m = _smoke->methods[_smoke->methodMaps[i].method];
>    if ((m.flags & Smoke::mf_ctor))
>      continue; // constructors are capitalized, so can be mixed-in
>    if ((m.flags & Smoke::mf_enum) == 0)
>      break;
>    (*_c->classFn)(m.method, 0, stack);
>    values[_smoke->methodNames[m.name]] = stack[0].s_enum;
>  }
>
> but have not gone any further yet.
>
> When I do
>
> $ Rscript -e "require(qtbase); Qt\$QRectF"
>
> I get three possible outputs:
>
> (1) Everything is; The return value has values.size() == 0
>
> (2) Error: return value has values.size() == 1, leading to
>
> Error in assign(enum, structure(enums[enum], class = "QtEnum"), env) :
>  attempt to use zero-length variable name
> Calls: <Anonymous> -> qsmokeClass -> assign
> Execution halted
>
> (3) Segfault inside the loop:
>
>  *** caught segfault ***
> address 0x20, cause 'memory not mapped'
>
> Traceback:
>  1: .Call(qt_qenums, x)
>  2: qenums(cl)
>  3: qsmokeClass(lib, classes[[classAlias]])
>  4: function () {    class <- qsmokeClass(lib, classes[[classAlias]])
>  rm(list = classAlias, envir = lib)    assign(classAlias, class, lib)
>   lockBinding(classAlias, lib)    class}()
> aborting ...
> Segmentation fault
> _______________________________________________
> Qtinterfaces-devel mailing list
> Qtinterfaces-devel at lists.r-forge.r-project.org
>
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.r-forge.r-project.org/pipermail/qtinterfaces-devel/attachments/20100303/00bb9167/attachment.htm 


More information about the Qtinterfaces-devel mailing list