You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by arpadboda <gi...@git.apache.org> on 2018/11/15 12:00:53 UTC

[GitHub] nifi-minifi-cpp pull request #439: MINIFICPP-645 - Move from new to malloc i...

GitHub user arpadboda opened a pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/439

    MINIFICPP-645 - Move from new to malloc in CAPI to facilitate eventua…

    …l change from C++ to C
    
    Thank you for submitting a contribution to Apache NiFi - MiNiFi C++.
    
    In order to streamline the review of the contribution we ask you
    to ensure the following steps have been taken:
    
    ### For all changes:
    - [ ] Is there a JIRA ticket associated with this PR? Is it referenced
         in the commit message?
    
    - [ ] Does your PR title start with MINIFICPP-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
    
    - [ ] Has your PR been rebased against the latest commit within the target branch (typically master)?
    
    - [ ] Is your initial contribution a single, squashed commit?
    
    ### For code changes:
    - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)?
    - [ ] If applicable, have you updated the LICENSE file?
    - [ ] If applicable, have you updated the NOTICE file?
    
    ### For documentation related changes:
    - [ ] Have you ensured that format looks appropriate for the output in which it is rendered?
    
    ### Note:
    Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/arpadboda/nifi-minifi-cpp MINIFICPP-645

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/nifi-minifi-cpp/pull/439.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #439
    
----
commit 8b0e39dc8ec0dc79c8b3e58fa1a364e736a1fe38
Author: Arpad Boda <ab...@...>
Date:   2018-11-15T12:00:07Z

    MINIFICPP-645 - Move from new to malloc in CAPI to facilitate eventual change from C++ to C

----


---

[GitHub] nifi-minifi-cpp pull request #439: MINIFICPP-645 - Move from new to malloc i...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/nifi-minifi-cpp/pull/439


---

[GitHub] nifi-minifi-cpp pull request #439: MINIFICPP-645 - Move from new to malloc i...

Posted by arpadboda <gi...@git.apache.org>.
Github user arpadboda commented on a diff in the pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/439#discussion_r233815698
  
    --- Diff: nanofi/src/api/nanofi.cpp ---
    @@ -205,7 +205,7 @@ flow_file_record* create_ff_object(const char *file, const size_t len, const uin
     }
     
     flow_file_record* create_ff_object_na(const char *file, const size_t len, const uint64_t size) {
    -  flow_file_record *new_ff = new flow_file_record;
    +  flow_file_record *new_ff = (flow_file_record*) malloc(sizeof(flow_file_record));
    --- End diff --
    
    Happy newless year! :)


---

[GitHub] nifi-minifi-cpp issue #439: MINIFICPP-645 - Move from new to malloc in CAPI ...

Posted by phrocker <gi...@git.apache.org>.
Github user phrocker commented on the issue:

    https://github.com/apache/nifi-minifi-cpp/pull/439
  
    > There is no delete, it was wrong before, this PR just fixes:
    > 
    > ```
    > void free_flowfile(flow_file_record *ff) {
    >   if (ff == nullptr) {
    >     return;
    >   }
    >   auto content_repo_ptr = static_cast<std::shared_ptr<minifi::core::ContentRepository>*>(ff->crp);
    >   if (content_repo_ptr->get()) {
    >     std::shared_ptr<minifi::ResourceClaim> claim = std::make_shared<minifi::ResourceClaim>(ff->contentLocation, *content_repo_ptr);
    >     (*content_repo_ptr)->remove(claim);
    >   }
    >   if (ff->ffp == nullptr) {
    >     auto map = static_cast<string_map*>(ff->attributes);
    >     delete map;
    >   }
    >   free(ff->contentLocation);
    >   free(ff);
    > ```
    > The last line is the one that frees.
    
    Ah sorry, I was referencing the fact that over the course of PRs we've gone back and forth a little between malloc/new. There is a free_flow(flow *) that still uses delete. Happy to see a different PR if you prefer to do that, but it all falls under the guise of this ticket IMO. Would you prefer I merge this and then keep the ticket open as a blocker for the free? No real preference on my part. 


---

[GitHub] nifi-minifi-cpp issue #439: MINIFICPP-645 - Move from new to malloc in CAPI ...

Posted by arpadboda <gi...@git.apache.org>.
Github user arpadboda commented on the issue:

    https://github.com/apache/nifi-minifi-cpp/pull/439
  
    There is no delete, it was wrong before:
    ```
    void free_flowfile(flow_file_record *ff) {
      if (ff == nullptr) {
        return;
      }
      auto content_repo_ptr = static_cast<std::shared_ptr<minifi::core::ContentRepository>*>(ff->crp);
      if (content_repo_ptr->get()) {
        std::shared_ptr<minifi::ResourceClaim> claim = std::make_shared<minifi::ResourceClaim>(ff->contentLocation, *content_repo_ptr);
        (*content_repo_ptr)->remove(claim);
      }
      if (ff->ffp == nullptr) {
        auto map = static_cast<string_map*>(ff->attributes);
        delete map;
      }
      free(ff->contentLocation);
      free(ff);
    ```
    
    The last line is the one that frees. 


---

[GitHub] nifi-minifi-cpp pull request #439: MINIFICPP-645 - Move from new to malloc i...

Posted by phrocker <gi...@git.apache.org>.
Github user phrocker commented on a diff in the pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/439#discussion_r234012390
  
    --- Diff: nanofi/src/api/nanofi.cpp ---
    @@ -205,7 +205,7 @@ flow_file_record* create_ff_object(const char *file, const size_t len, const uin
     }
     
     flow_file_record* create_ff_object_na(const char *file, const size_t len, const uint64_t size) {
    -  flow_file_record *new_ff = new flow_file_record;
    +  flow_file_record *new_ff = (flow_file_record*) malloc(sizeof(flow_file_record));
    --- End diff --
    
    Oops, sorry, must change the delete to free due to avoid heap corruption. 


---