Changeset 3638


Ignore:
Timestamp:
Apr 26, 2013 5:28:07 AM (8 years ago)
Author:
gah
Message:

fix ruby getstring for binary strings

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/vtkheightmapviewer.tcl

    r3623 r3638  
    747747            SendCmd "clientinfo [list $info]"
    748748        }
    749 
    750749        set w [winfo width $itk_component(view)]
    751750        set h [winfo height $itk_component(view)]
  • trunk/lang/octave/src/rpLibGetString.cc

    r1844 r3638  
    4141    octave_value_list retval;
    4242    int err = 1;
    43     int nargin = args.length ();
    44     std::string path = "";
    45     int libHandle = 0;
    46     RpLibrary* lib = NULL;
     43    int argc;
    4744    std::string retStr = "";
    4845
    49     if (nargin == 2) {
    50 
    51         if (    args(0).is_real_scalar () &&
    52                 args(1).is_string      ()   ) {
     46    argc = args.length();
     47    if (argc == 2) {
     48        if ((args(0).is_real_scalar()) && (args(1).is_string())) {
     49            std::string path;
     50            int libHandle;
    5351
    5452            libHandle = args(0).int_value ();
     53
    5554            path = args(1).string_value ();
    56 
    5755            /* Call the C subroutine. */
    5856            // path can be an empty string
    59             if ( (libHandle >= 0) ) {
     57            if (libHandle >= 0) {
     58                RpLibrary* lib;
    6059
    6160                lib = (RpLibrary*) getObject_Void(libHandle);
    62 
    63                 if (lib) {
    64                     retStr = lib->getString(path);
    65                     err = 0;
     61                if (lib != NULL) {
     62                    retval(0) = lib->getString(path);
     63                    retval(1) = 0;
     64                    return retval;
    6665                }
    67                 else {
    68                     // lib was null (not found in dictionary)
    69                 }
     66            } else {
     67                // invalid libHandle
     68                _PRINT_USAGE(who.c_str());
    7069            }
    71             else {
    72                 // invalid libHandle
    73                 _PRINT_USAGE (who.c_str());
    74             }
     70        } else {
     71            // wrong arg types
     72            _PRINT_USAGE(who.c_str());
    7573        }
    76         else {
    77             // wrong arg types
    78             _PRINT_USAGE (who.c_str());
    79         }
     74    } else {
     75        // wrong number of args.
     76        _PRINT_USAGE(who.c_str());
    8077    }
    81     else {
    82         // wrong number of args.
    83         _PRINT_USAGE (who.c_str());
    84     }
    85 
    8678    retval(0) = retStr;
    87     retval(1) = err;
     79    retval(1) = 1;
    8880    return retval;
    8981}
  • trunk/lang/python/Rappture/PyRpLibrary.cc

    r3177 r3638  
    471471{
    472472    char* path = (char *)"";
    473 
    474473    PyObject* decode = NULL;
    475474    int decodeFlag;
    476 
    477     PyObject* retVal = NULL;
    478     std::string retValStr = "";
    479     Rappture::Buffer retValBuf;
    480 
     475    PyObject *resultPtr = NULL;
    481476    int argc = 0;
    482477
     
    517512    }
    518513    if (decodeFlag) {
    519         retValStr = self->lib->get(std::string(path));
    520         retVal = PyString_FromStringAndSize(retValStr.c_str(),retValStr.size());
     514        std::string s;
     515
     516        s = self->lib->get(std::string(path));
     517        resultPtr = PyString_FromStringAndSize(s.c_str(), s.size());
    521518    } else {
    522         retValBuf = self->lib->getData(std::string(path));
    523         retVal = PyString_FromStringAndSize(retValBuf.bytes(),retValBuf.size());
    524     }
    525     return (PyObject *)retVal;
     519        Rappture::Buffer out;
     520
     521        out = self->lib->getData(std::string(path));
     522        resultPtr = PyString_FromStringAndSize(out.bytes(), out.size());
     523    }
     524    return (PyObject *)resultPtr;
    526525}
    527526
  • trunk/lang/ruby/Ruby_Rappture.cc

    r3280 r3638  
    8787     
    8888   /* Return a Ruby VALUE */
    89    return rb_str_new2(result.c_str());
     89   return rb_str_new(result.c_str(), result.length());
    9090
    9191}  /* end RbRp_GetString */
Note: See TracChangeset for help on using the changeset viewer.