Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / UnSafeCharBuffer.cs / 1305376 / UnSafeCharBuffer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DynamicRenderer.cs
- ProfileParameter.cs
- Privilege.cs
- DispatcherTimer.cs
- SourceElementsCollection.cs
- WebFormDesignerActionService.cs
- GacUtil.cs
- ListCollectionView.cs
- EnumBuilder.cs
- GeneratedCodeAttribute.cs
- XmlSignificantWhitespace.cs
- ResourceProviderFactory.cs
- RelationshipDetailsCollection.cs
- ErrorStyle.cs
- WmlPhoneCallAdapter.cs
- StretchValidation.cs
- XmlWrappingReader.cs
- ProtocolElementCollection.cs
- DataGridCell.cs
- MatrixTransform3D.cs
- OleDbPermission.cs
- OverflowException.cs
- ToolStripDropDownClosedEventArgs.cs
- TextSelectionHighlightLayer.cs
- SingleObjectCollection.cs
- PackageDigitalSignature.cs
- Buffer.cs
- RequiredAttributeAttribute.cs
- DropShadowEffect.cs
- PropertyManager.cs
- FastEncoder.cs
- MetadataPropertyAttribute.cs
- TableItemStyle.cs
- ConditionalAttribute.cs
- Misc.cs
- MemoryFailPoint.cs
- AdRotatorDesigner.cs
- PreviewPrintController.cs
- WebPartMenu.cs
- PkcsMisc.cs
- ByteConverter.cs
- SafeFindHandle.cs
- RouteParameter.cs
- StrokeCollection.cs
- MsmqHostedTransportConfiguration.cs
- Funcletizer.cs
- LabelExpression.cs
- DocumentsTrace.cs
- IndentTextWriter.cs
- SectionXmlInfo.cs
- SqlBuffer.cs
- TimeoutHelper.cs
- PersonalizationStateInfoCollection.cs
- ISAPIApplicationHost.cs
- PresentationSource.cs
- InvokePatternIdentifiers.cs
- SecurityVersion.cs
- DataTableTypeConverter.cs
- ComplexTypeEmitter.cs
- QilNode.cs
- parserscommon.cs
- SSmlParser.cs
- CharacterShapingProperties.cs
- XmlAttributes.cs
- Stroke2.cs
- Rotation3DAnimation.cs
- AttachedPropertyBrowsableAttribute.cs
- PropertyChangeTracker.cs
- RSAPKCS1SignatureFormatter.cs
- BindingCollection.cs
- CodeChecksumPragma.cs
- httpapplicationstate.cs
- FunctionParameter.cs
- OleCmdHelper.cs
- SystemTcpConnection.cs
- OleAutBinder.cs
- Number.cs
- DrawingImage.cs
- CellLabel.cs
- ListMarkerSourceInfo.cs
- CompilationSection.cs
- Missing.cs
- ImageDesigner.cs
- BuildProvidersCompiler.cs
- KeyProperty.cs
- QueryStatement.cs
- TypeReference.cs
- FamilyMap.cs
- DataGridViewDataConnection.cs
- DbDeleteCommandTree.cs
- TextSpan.cs
- AndMessageFilter.cs
- ActivationServices.cs
- WmlLabelAdapter.cs
- TraceEventCache.cs
- LostFocusEventManager.cs
- CustomPopupPlacement.cs
- DataContractSerializerOperationFormatter.cs
- FreezableCollection.cs
- WebDescriptionAttribute.cs