I did some tries with no success. If I have this declaration: *int p3stuff(char *imgUrl, unsigned char *wrappedkey);* How can I make sure the contents of imgUrl will persist even out of the scope? Because it's a pointer so maybe I need to malloc first the space and then memcpy the contents? Suppose I have a global var like this *char *imageUrl;* I'd be very thankful if you can provide me an example.
2015-10-20 15:57 GMT-07:00 Alon Zakai <[email protected]>: > Yes, if you want something to live beyond the current function call, you > should use malloc(). That will only be reused after you call free() on it. > > On Tue, Oct 20, 2015 at 3:51 PM, Pau Ballart <[email protected]> wrote: > >> Updated to 1.35 but same problem... >> Maybe the question to formulate would be: How can I save in a >> global/static variable some information so that I can acces it later in the >> callback function and make sure it's not overwritten? >> What do you think about using malloc() somehow? Would it work? >> >> 2015-10-20 14:18 GMT-07:00 Alon Zakai <[email protected]>: >> >>> Might be worth trying current master (or incoming) then, which is now >>> 1.35.0. >>> >>> On Tue, Oct 20, 2015 at 2:16 PM, Pau Ballart <[email protected]> wrote: >>> >>>> $ emcc -v >>>> emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) >>>> 1.34.8 >>>> clang version 3.7.0 >>>> Target: x86_64-apple-darwin15.0.0 >>>> Thread model: posix >>>> INFO root: (Emscripten: Running sanity checks) >>>> >>>> 2015-10-20 14:05 GMT-07:00 Alon Zakai <[email protected]>: >>>> >>>>> One possible issue is that if those values are on the stack, and the >>>>> scope exits, then that stack memory might be reused. For example this is >>>>> unsafe: >>>>> >>>>> { >>>>> char buffer[100]; >>>>> // write into buffer >>>>> emscripten_async_wget(..., (void*)buffer); >>>>> } >>>>> >>>>> The buffer will be released before the async callback occurs, and >>>>> other data might be written into it before the callback reads from it. >>>>> >>>>> Which version of emscripten are you using, btw? I remember a while >>>>> back we had a bug around this. >>>>> >>>>> On Tue, Oct 20, 2015 at 1:36 PM, Pau Ballart <[email protected]> >>>>> wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> After some research and some refactor I did the following: >>>>>> >>>>>> - In my p3stuff function I >>>>>> call emscripten_set_main_loop(wait_wgets, 0, 0); so the application >>>>>> is not >>>>>> terminated. >>>>>> - In wait_wgets I call the emscripten_async_wget(imageUrl, path, >>>>>> onLoaded, onError); only the first time the method is called. >>>>>> - In the onLoaded callback I call emscripten_cancel_main_loop(); >>>>>> and then I call my c code that perform the jpeg stuff. >>>>>> >>>>>> Problem is: >>>>>> the p3stuff function has 2 arguments: int p3stuff(char *imgUrl, >>>>>> unsigned char *wrappedkey) >>>>>> When it's called i have two global variables unsigned char >>>>>> *wrappedKey; and char *imageUrl; which are assigned with the argument >>>>>> like >>>>>> that: >>>>>> >>>>>> wrappedKey = wrappedkey; >>>>>> imageUrl = imgUrl; >>>>>> >>>>>> I do that in order to access the image url from the wait_wgets() or >>>>>> the wrapped key from the onLoaded callback but I think there is some >>>>>> memory >>>>>> management problems cause if I print the url just before calling >>>>>> emscripten_async_wget the imageUrl variable content is completely rubbish >>>>>> but id I don't print anything it works. >>>>>> >>>>>> So how can I use the global variables in C in order to not get >>>>>> overwritten? Maybe using malloc, or memcopy? >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Pau >>>>>> >>>>>> 2015-10-19 10:53 GMT-07:00 Pau Ballart <[email protected]>: >>>>>> >>>>>>> Okay I will try the async version and let you know. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> 2015-10-17 19:37 GMT-07:00 Alon Zakai <[email protected]>: >>>>>>> >>>>>>>> The only tricky thing with emscripten_wget is that as mentioned in >>>>>>>> the docs, >>>>>>>> >>>>>>>> >>>>>>>> http://kripken.github.io/emscripten-site/docs/api_reference/emscripten.h.html#c.emscripten_wget >>>>>>>> >>>>>>>> it requires the ASYNCIFY option. It's easier in general to use the >>>>>>>> async version, emscripten_async_wget, which does not require ASYNCIFY. >>>>>>>> >>>>>>>> >>>>>>>> On Sat, Oct 17, 2015 at 10:47 AM, Pau Ballart <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> I think the php code is correct so I'm just trying to download an >>>>>>>>> image and process it's data but I think I'm missing something about >>>>>>>>> the >>>>>>>>> lifecycle or wget function because I get unexpected exit errors. >>>>>>>>> >>>>>>>>> So I'd like to know if the emscripten_wget(imgUrl, path); is >>>>>>>>> correct because I have the weirdest behaviour ever that depending on >>>>>>>>> the >>>>>>>>> p3stuff function param "wrappedkey" the download succeeds or not. >>>>>>>>> >>>>>>>>> 2015-10-15 17:07 GMT-07:00 Alon Zakai <[email protected]>: >>>>>>>>> >>>>>>>>>> I see you have >>>>>>>>>> >>>>>>>>>> P3Func = Module.cwrap('p3stuff', 'number', ['string', 'string']); >>>>>>>>>> >>>>>>>>>> which looks good. You can then call it with something like >>>>>>>>>> >>>>>>>>>> result = P3Func('first', 'second'); >>>>>>>>>> >>>>>>>>>> which I see you are doing. What part of that are you trying to >>>>>>>>>> improve? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Oct 15, 2015 at 12:59 PM, Pau Ballart <[email protected] >>>>>>>>>> > wrote: >>>>>>>>>> >>>>>>>>>>> Okay so the php is just calling a function I declared. Because I >>>>>>>>>>> need to pass the image url as an argument and a key, I don't know >>>>>>>>>>> how to do >>>>>>>>>>> it using the main function so I changed the main function for this >>>>>>>>>>> one with >>>>>>>>>>> the two arguments and then called this function from my php code. >>>>>>>>>>> Is there a better way to call emscripten passing parameters? >>>>>>>>>>> >>>>>>>>>>> Thanks. >>>>>>>>>>> >>>>>>>>>>> 2015-10-15 12:55 GMT-07:00 Alon Zakai <[email protected]>: >>>>>>>>>>> >>>>>>>>>>>> It would be good to focus the question more, it's hard to tell >>>>>>>>>>>> what the core issue is. Try to reduce the problem to just one >>>>>>>>>>>> concrete >>>>>>>>>>>> thing, like just loading a file, and doing it without that custom >>>>>>>>>>>> PHP >>>>>>>>>>>> script, for example. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Oct 15, 2015 at 12:27 PM, Pau Ballart < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hello developers, >>>>>>>>>>>>> >>>>>>>>>>>>> I'm starting a project and I'm new at Javascript and >>>>>>>>>>>>> emscripten. I'm trying to download some image data from a server >>>>>>>>>>>>> and then >>>>>>>>>>>>> process it using some c functions I already have working. I asked >>>>>>>>>>>>> this >>>>>>>>>>>>> question in Stackoverflow so I share you the link and maybe one >>>>>>>>>>>>> of you can >>>>>>>>>>>>> help me. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> http://stackoverflow.com/questions/33087205/emscripten-code-for-image-data-download-using-emscripten-wget-or-emscripten-asyn >>>>>>>>>>>>> >>>>>>>>>>>>> Thank you, >>>>>>>>>>>>> >>>>>>>>>>>>> Pau B >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>>> Google Groups "emscripten-discuss" group. >>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>>> it, send an email to >>>>>>>>>>>>> [email protected]. >>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to a topic >>>>>>>>>>>> in the Google Groups "emscripten-discuss" group. >>>>>>>>>>>> To unsubscribe from this topic, visit >>>>>>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe >>>>>>>>>>>> . >>>>>>>>>>>> To unsubscribe from this group and all its topics, send an >>>>>>>>>>>> email to [email protected]. >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Pau Ballart >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "emscripten-discuss" group. >>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>> it, send an email to >>>>>>>>>>> [email protected]. >>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to a topic >>>>>>>>>> in the Google Groups "emscripten-discuss" group. >>>>>>>>>> To unsubscribe from this topic, visit >>>>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe >>>>>>>>>> . >>>>>>>>>> To unsubscribe from this group and all its topics, send an email >>>>>>>>>> to [email protected]. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Pau Ballart >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "emscripten-discuss" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to [email protected]. >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to a topic in >>>>>>>> the Google Groups "emscripten-discuss" group. >>>>>>>> To unsubscribe from this topic, visit >>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe >>>>>>>> . >>>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>>> [email protected]. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Pau Ballart >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Pau Ballart >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "emscripten-discuss" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "emscripten-discuss" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe >>>>> . >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected]. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> >>>> -- >>>> Pau Ballart >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "emscripten-discuss" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "emscripten-discuss" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Pau Ballart >> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to a topic in the > Google Groups "emscripten-discuss" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe > . > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Pau Ballart -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
