On Jan 3, 2011, at 9:57 AM, Argyrios Kyrtzidis wrote:

> Author: akirtzidis
> Date: Mon Jan  3 11:57:40 2011
> New Revision: 122756
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=122756&view=rev
> Log:
> In the latest episode of "Deserializing bugs caused by accessors" the series 
> reached a thrilling climax when
> FunctionDecl::setPure crashed a poor user's code.
> 
> Remove the use of this accessor when deserializing, along with several other 
> in the neighborhood. Fixes rdar://8759653.

Can the mutators die, too?

        - Doug

> Modified:
>    cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
> 
> Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderDecl.cpp?rev=122756&r1=122755&r2=122756&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp Mon Jan  3 11:57:40 2011
> @@ -385,17 +385,17 @@
>   // after everything else is read.
> 
>   FD->SClass = (StorageClass)Record[Idx++];
> -  FD->setStorageClassAsWritten((StorageClass)Record[Idx++]);
> +  FD->SClassAsWritten = (StorageClass)Record[Idx++];
>   FD->IsInline = Record[Idx++];
>   FD->IsInlineSpecified = Record[Idx++];
> -  FD->setVirtualAsWritten(Record[Idx++]);
> -  FD->setPure(Record[Idx++]);
> -  FD->setHasInheritedPrototype(Record[Idx++]);
> -  FD->setHasWrittenPrototype(Record[Idx++]);
> -  FD->setDeleted(Record[Idx++]);
> -  FD->setTrivial(Record[Idx++]);
> -  FD->setHasImplicitReturnZero(Record[Idx++]);
> -  FD->setLocEnd(ReadSourceLocation(Record, Idx));
> +  FD->IsVirtualAsWritten = Record[Idx++];
> +  FD->IsPure = Record[Idx++];
> +  FD->HasInheritedPrototype = Record[Idx++];
> +  FD->HasWrittenPrototype = Record[Idx++];
> +  FD->IsDeleted = Record[Idx++];
> +  FD->IsTrivial = Record[Idx++];
> +  FD->HasImplicitReturnZero = Record[Idx++];
> +  FD->EndRangeLoc = ReadSourceLocation(Record, Idx);
> 
>   // Read in the parameters.
>   unsigned NumParams = Record[Idx++];
> 
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to