Comment #1 on issue 678 by kaspar.f...@dreizak.com: Clearing an extension message clears it but HasExtension still reports it's not cleared (Protobuf 2.4.1)
https://code.google.com/p/protobuf/issues/detail?id=678

For the sake of completeness, here are the files contained in the ZIP:

$ cat A.proto
message A {
        optional string a = 1;
        extensions 100 to 1000;
}

message AExt {
        message E {
                optional string e = 1;
        }
        extend A {
                repeated E ext = 100;
        }
}

$ cat main.cc
// $ protoc --version
// libprotoc 2.4.1
// $ c++ -L/opt/brew/lib -I/opt/brew/include/ main.cc A.pb.cc -lprotobuf -o main
// $ c++ --version
// Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
// Target: x86_64-apple-darwin13.4.0
// Thread model: posix


#include "A.pb.h"
#include <iostream>
#include <google/protobuf/text_format.h>

void expectTrue(bool e, const std::string& msg) {
        if (!e) {
                std::cout << "violated: " << msg << std::endl;
        }
}

int main() {
        std::cout << "hello" << std::endl;

        // Clearing a message extension clears it but reports as still present
        {
                A a;
                a.AddExtension(AExt::ext)->set_e("e");
                expectTrue(a.HasExtension(AExt::ext), "A has extension");
                expectTrue(a.ExtensionSize(AExt::ext) == 1, "A's extension has size 
1");
                a.ClearExtension(AExt::ext);
                expectTrue(a.ExtensionSize(AExt::ext) == 0, "A's extension has size 
0");
                expectTrue(!a.HasExtension(AExt::ext), "A has no extension"); 
// FAILS
        }

        return 0;
}

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
You received this message because you are subscribed to the Google Groups "Protocol 
Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to