{"push_id":876027503,"size":34,"distinct_size":34,"ref":"refs/heads/trunk","head":"657e6be3dd15e20b7bbb51e72d584746e1b48904","before":"5db98d007458d342e8206afbd71c880616ee4e88","commits":[{"sha":"de7424404b6f096465234ec43519a56df34d6176","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Fix memory leaks in intern.c when OOM is raised\n\nIn the function, `intern_alloc` a call to caml_alloc_for_heap is very likely to\nreturn NULL when reading a big marshaled value. If that happens, before raising\nout_of_memory, it should call the `intern_cleanup` function to free the stack\nas well as `intern_input` that may have been malloced by `caml_input_val`.\nSimilarly, `intern_cleanup` should also be called when we are not able to\nallocate `intern_obj_table`. To do that, I added a function\n`caml_stat_alloc_no_raise` which, like its brother, `caml_stat_alloc` wraps\nsome debugging information around a call to malloc. I could have used directly\nmalloc instead of adding a new function to memory.c, as it is done in other\nplaces of the code (it has the drawback of not adding the debug tag).\n\nNote that this fix is not perfect. The function `intern_alloc` could also raise\nout_of_memory through its call to `caml_alloc_shr`. It is less likely to happen\nsince caml_alloc_shr is only called when the input is smaller than Max_wosize\nbut it could happen. In that case, there will be leak (but a smaller one).","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/de7424404b6f096465234ec43519a56df34d6176"},{"sha":"bd471eb1986776112f7d4ef22913a35c761b203a","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Fix a memory leak in concat_array\n\nThere is a memory leak when the second or the third call to `caml_stack_alloc`\nin `caml_array_concat` raises Out_of_memory. This will fix it.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/bd471eb1986776112f7d4ef22913a35c761b203a"},{"sha":"ddd51af088bed9c0df7e73da161d843666256e33","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Fix memory leaks in intern.c in alloc_shr case\n\nPrevents the function `caml_alloc_shr` to raise an OOM exception\nbefore intern_cleanup could be called (this complete commit 1e62f1b).\n\nIt defines a new caml_alloc_shr_no_raise function.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/ddd51af088bed9c0df7e73da161d843666256e33"},{"sha":"d4d7bcd48ea37173cec6dce8918e7a433ea7c480","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Fix indentation.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/d4d7bcd48ea37173cec6dce8918e7a433ea7c480"},{"sha":"5766c2de360f0838b40390b57acd2834e06e3641","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Delete stat_alloc_no_raise and duplicate alloc_shr\n\nI replaced all calls to stat_alloc_no_raise by plain mallocs.\nAlso, I reimplemented alloc_shr_no_raise by duplicating the code of alloc_shr to avoid any overhead induced by an extra function call.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/5766c2de360f0838b40390b57acd2834e06e3641"},{"sha":"4e2891b97baf77182283847affa5c105bd9f424c","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Remove useless stdio #include","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/4e2891b97baf77182283847affa5c105bd9f424c"},{"sha":"522453659a00cd5e70f75c0c622c08ef11416e4e","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Remove useless declaration in memory.h.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/522453659a00cd5e70f75c0c622c08ef11416e4e"},{"sha":"01ef4800b31971ce2fadfe0178a38ae7c75535fc","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"alloc_shr is a wrapper around alloc_shr_no_raise\n\nIt is explicitly unfolded in the minor_gc.c for performance.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/01ef4800b31971ce2fadfe0178a38ae7c75535fc"},{"sha":"d6d3744d6fe5af1f2995fc6deb945506fe465c43","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Idempotent intern_cleanup","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/d6d3744d6fe5af1f2995fc6deb945506fe465c43"},{"sha":"15b51b1c7bd65886fc1f830dcc92dc8c0e01c417","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Assert intern is in a clean state\n\nAssert that intern is in a clean state at the beginning of demarshaling\nprimitives.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/15b51b1c7bd65886fc1f830dcc92dc8c0e01c417"},{"sha":"8414d46214673385f31aa0c8d1b2b8eb247a64c5","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Simplify intern state.","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/8414d46214673385f31aa0c8d1b2b8eb247a64c5"},{"sha":"66714a3af1111f915adf4ab718a3a6b866dd12e4","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Use a global variable to implement caml_alloc_shr_no_raise","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/66714a3af1111f915adf4ab718a3a6b866dd12e4"},{"sha":"061525dae005d8940b02c2a43d5b5fc4e793ad85","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Typo in comment","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/061525dae005d8940b02c2a43d5b5fc4e793ad85"},{"sha":"1a2c6310fc2a20eee72605a829bc064415912594","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Adds a function intern_init to set global state","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/1a2c6310fc2a20eee72605a829bc064415912594"},{"sha":"448d365d32db42ff4898d008d995cab1a28e6e6c","author":{"email":"367bbdfafbbc1a3248435237fe8f192500cc470e@gmail.com","name":"Marc Lasson"},"message":"Update changelog & remove useless vertical spaces","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/448d365d32db42ff4898d008d995cab1a28e6e6c"},{"sha":"81ca324ef3a95be6e78dd1c7870e96e086b41a7b","author":{"email":"093c903bc42befb28a91862cf0033a84cad130b9@gmail.com","name":"iguer"},"message":"Map.remove returns the original map when the binding to be removed is not present in the map","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/81ca324ef3a95be6e78dd1c7870e96e086b41a7b"},{"sha":"37159fbc42e8180afbf7c4c56358dc146c86f41c","author":{"email":"093c903bc42befb28a91862cf0033a84cad130b9@gmail.com","name":"iguer"},"message":"Map.filter returns the original map when the given predicate satisfies all the bindings of the map","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/37159fbc42e8180afbf7c4c56358dc146c86f41c"},{"sha":"d689a686b922050ee94a042b04e2d49afce30cd7","author":{"email":"093c903bc42befb28a91862cf0033a84cad130b9@gmail.com","name":"iguer"},"message":"Map.add x y m returns the original map if x is already bound to a value that is physically equal to y in m","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/d689a686b922050ee94a042b04e2d49afce30cd7"},{"sha":"fd163982d7de55f12c151591b644d2e16240a1d7","author":{"email":"093c903bc42befb28a91862cf0033a84cad130b9@gmail.com","name":"iguer"},"message":"update the doc of Map.(add, remove, filter)","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/fd163982d7de55f12c151591b644d2e16240a1d7"},{"sha":"2b25384df58162b0e13febf7c3ab446997016f80","author":{"email":"093c903bc42befb28a91862cf0033a84cad130b9@gmail.com","name":"iguer"},"message":"simple sharing in maps: update Changes","distinct":true,"url":"https://api.github.com/repos/rneswold/ocaml/commits/2b25384df58162b0e13febf7c3ab446997016f80"}]}