Envoyé par : niceday
Date : 05/06/2008 11:35
Bonjour, J'ai un plantage dans mon XPCOM que je n'arrive pas à résoudre, je souhaite récupérer une liste de valeur, j'ai simplifié le code mais l'essentiel est là :
code javascript:
function test() { var myXpcom = Components.classes[CID].createInstance(Components.interfaces.IPilotClient); var count = new Object(); var list = new Object(); myXpcom.GetList(count, list); }
xpidl :
long GetList(out unsigned long count, [array, size_is(count)] out double list);
code c++ :
NS_IMETHODIMP MYClass::GetList(PRUint32 *count, double **list, PRInt32 *_retval) { *count = 2; *list = (double*)nsMemory::Alloc(*count * sizeof(double)); (*list)[0] = 5; (*list)[0] = 7; => Segmentation fault !!!!!!! return NS_OK; }
Merci beaucoup niceday
Envoyé par : Paul Rouget
Date : 05/06/2008 12:25
Pourquoi as tu un _retval ? Et ton return NS_OK ?
Envoyé par : niceday
Date : 05/06/2008 14:14
Effectivment dans l'exemple j'avais oublié le NS_OK (je l'ai mis à jour). retval me permet de retourner un code d'erreur, je ne l'ai pas implémenté dans l'exemple... Sinon ca te dit quelque chose ?
Envoyé par : Paul Rouget
Date : 05/06/2008 18:27
je ne sais pas, mais en tout cas, ton code n'est pas correct, le _retval est incompatible avec ton IDL.
Envoyé par : niceday
Date : 05/06/2008 18:28
Désolé j'avais fait une boulette dans mon code et l'exemple n'était pas representatif ! Merci d'avoir répondu !!!
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.