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
- StylusDevice.cs
- XmlElementList.cs
- CharacterHit.cs
- BitmapPalette.cs
- SchemaEntity.cs
- MutexSecurity.cs
- SubtreeProcessor.cs
- PrintPageEvent.cs
- Shape.cs
- ComplusTypeValidator.cs
- ConfigurationLocationCollection.cs
- EasingQuaternionKeyFrame.cs
- FixedPageStructure.cs
- FamilyMap.cs
- SafeNativeMethods.cs
- NullableBoolConverter.cs
- Attributes.cs
- HtmlFormParameterWriter.cs
- RichTextBoxAutomationPeer.cs
- HttpResponseInternalWrapper.cs
- UInt32Converter.cs
- UnicodeEncoding.cs
- LookupBindingPropertiesAttribute.cs
- AmbientLight.cs
- StrongNameKeyPair.cs
- FilterableData.cs
- DataSourceCollectionBase.cs
- ToolStripControlHost.cs
- BitmapImage.cs
- PageParser.cs
- RedistVersionInfo.cs
- DetailsViewInsertEventArgs.cs
- InspectionWorker.cs
- ServiceEndpoint.cs
- Translator.cs
- EntityClientCacheKey.cs
- AnnotationAdorner.cs
- InternalBase.cs
- HebrewNumber.cs
- ReadingWritingEntityEventArgs.cs
- TrustManagerMoreInformation.cs
- CompilerParameters.cs
- Trigger.cs
- XmlSchemaInclude.cs
- AssemblyCollection.cs
- MiniModule.cs
- basecomparevalidator.cs
- ImageField.cs
- TemplateField.cs
- ItemsPanelTemplate.cs
- QueryExpr.cs
- AnchoredBlock.cs
- PathSegment.cs
- ConfigWriter.cs
- MetafileHeaderWmf.cs
- XmlSchemaAppInfo.cs
- InfocardChannelParameter.cs
- UserControl.cs
- OdbcTransaction.cs
- FixedBufferAttribute.cs
- WebBrowserDocumentCompletedEventHandler.cs
- LoginAutoFormat.cs
- WmlMobileTextWriter.cs
- ServiceDeploymentInfo.cs
- Pair.cs
- AdapterUtil.cs
- WizardPanel.cs
- UIElement.cs
- SqlDataReader.cs
- SafeFileMappingHandle.cs
- WebBaseEventKeyComparer.cs
- TableAutomationPeer.cs
- TimeStampChecker.cs
- UserControl.cs
- EventEntry.cs
- PrivateFontCollection.cs
- Activator.cs
- ITreeGenerator.cs
- DrawTreeNodeEventArgs.cs
- Dump.cs
- OpacityConverter.cs
- _ListenerRequestStream.cs
- Propagator.cs
- RegexCharClass.cs
- NameScopePropertyAttribute.cs
- SecurityContextSecurityTokenParameters.cs
- Control.cs
- StateMachineDesignerPaint.cs
- PositiveTimeSpanValidator.cs
- SubMenuStyle.cs
- XmlComment.cs
- ObjectListCommandCollection.cs
- CodeIdentifier.cs
- OpenFileDialog.cs
- SessionStateModule.cs
- DefaultShape.cs
- BindingSource.cs
- SqlCacheDependencySection.cs
- CommonXSendMessage.cs
- KeyboardDevice.cs