*rval = STRING_TO_JSVAL(JS_NewUCStringCopyN(cx, NS_REINTERPRET_CAST(const jschar*, nativeRet.GetUnicode()), nativeRet.Length()));
*rval = STRING_TO_JSVAL(JS_NewUCStringCopyN(cx, NS_REINTERPRET_CAST(const jschar*, nativeRet.get()), nativeRet.Length()));
InstallFileOpFileGetNativeVersion(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){  nsInstall*   nativeThis = (nsInstall*)JS_GetPrivate(cx, obj);  nsAutoString nativeRet;  JSObject *jsObj;  nsInstallFolder *folder;  *rval = JSVAL_NULL;  // If there's no private data, this must be the prototype, so ignore  if(nsnull == nativeThis)  {    return JS_TRUE;  }  //  public int FileGetNativeVersion (nsInstallFolder NativeFolderPath);  if (argc == 0 || argv[0] == JSVAL_NULL || !JSVAL_IS_OBJECT(argv[0])) //argv[0] MUST be a jsval  {    *rval = JSVAL_NULL;    return JS_TRUE;  }  jsObj = JSVAL_TO_OBJECT(argv[0]);  if (!JS_InstanceOf(cx, jsObj, &FileSpecObjectClass, nsnull))  {    *rval = JSVAL_NULL;    return JS_TRUE;  }  folder = (nsInstallFolder*)JS_GetPrivate(cx, jsObj);  if(!folder || NS_OK != nativeThis->FileOpFileGetNativeVersion(*folder, &nativeRet))  {    return JS_TRUE;  }  *rval = STRING_TO_JSVAL(JS_NewUCStringCopyN(cx, NS_REINTERPRET_CAST(const jschar*, nativeRet.GetUnicode()), nativeRet.Length()));  return JS_TRUE;}